英创Linux主板的Python, C#实例简介之三

 2020-10-20 14:44:37     作者:Emtronix    

  本文主要介绍在英创Linux工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#编程,实现对SPI和I2C两种常用工控接口的访问。Python和C#实例,均采用Visual Studio Code作为基本的编程工具,其代码可在主板 + ESMARC评估底板上运行,其基本的硬件环境采用采用ESM8000工控主板 + 评估底板构成,如下图所示:


英创Linux主板的Python, C#实例简介之三.png


  SPI接口采用把SPI_MOSI与SPI_MISO两条串行数据短接的方法,来验证SPI接口的收发功能。对I2C接口,则外接一个RTC芯片(ISL1208),通过读写芯片中USER寄存器,来展示I2C的操作。测试结果通过调试串口(console)输出。


Step7_Spi


  英创ESMARC主板的SPI接口与GPIO28 – GPIO31复用管脚,具体的硬件配置信息如下:


配置ESM8000,  ESM7000, ESM6800H
SPI_MISOGPIO28
SPI_MOSIGPIO29
SPI_CLKGPIO30
SPI_CSNGPIO31
DevNode/dev/spidev1.0


  短接GPIO28、GPIO29两个管脚,使SPI接收数据等于发送的数据。设置SPI模式0,SPI时钟为1MHz,可用示波器验证SPI模式、时钟频率等的正确性。


Python实现


英创Linux主板的Python, C#实例简介之三.png


C#实现


  C#的SPI类库包含在GPIO package中,因此需要添加System.Device.Gpio包。代码实例如下:


英创Linux主板的Python, C#实例简介之三.png


Step8_I2c


  英创ESMARC主板的I2C接口与GPIO26 – GPIO27复用管脚,具体的硬件配置信息如下:


配置ESM8000,  ESM7000, ESM6800H
I2C_SDAGPIO26
I2C_SCLGPIO27
DevNode/dev/i2c-0


  RTC芯片ISL1208的I2C地址为0x6F。芯片包含有两个Scratch寄存器,寄存器Index 分别为 0x12,0x13,可用于存储用户专用信息。


Python实现


英创Linux主板的Python, C#实例简介之三.png


C#实现


  C#的I2C类库包含在GPIO package中,因此需要添加System.Device.Gpio包。代码实例如下:


英创Linux主板的Python, C#实例简介之三.png