本文主要介绍在英创Linux工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#编程,实现对SPI和I2C两种常用工控接口的访问。Python和C#实例,均采用Visual Studio Code作为基本的编程工具,其代码可在主板 + ESMARC评估底板上运行,其基本的硬件环境采用采用ESM8000工控主板 + 评估底板构成,如下图所示:
SPI接口采用把SPI_MOSI与SPI_MISO两条串行数据短接的方法,来验证SPI接口的收发功能。对I2C接口,则外接一个RTC芯片(ISL1208),通过读写芯片中USER寄存器,来展示I2C的操作。测试结果通过调试串口(console)输出。
Step7_Spi
英创ESMARC主板的SPI接口与GPIO28 – GPIO31复用管脚,具体的硬件配置信息如下:
配置 | ESM8000, ESM7000, ESM6800H |
SPI_MISO | GPIO28 |
SPI_MOSI | GPIO29 |
SPI_CLK | GPIO30 |
SPI_CSN | GPIO31 |
DevNode | /dev/spidev1.0 |
短接GPIO28、GPIO29两个管脚,使SPI接收数据等于发送的数据。设置SPI模式0,SPI时钟为1MHz,可用示波器验证SPI模式、时钟频率等的正确性。
Python实现
C#实现
C#的SPI类库包含在GPIO package中,因此需要添加System.Device.Gpio包。代码实例如下:
Step8_I2c
英创ESMARC主板的I2C接口与GPIO26 – GPIO27复用管脚,具体的硬件配置信息如下:
配置 | ESM8000, ESM7000, ESM6800H |
I2C_SDA | GPIO26 |
I2C_SCL | GPIO27 |
DevNode | /dev/i2c-0 |
RTC芯片ISL1208的I2C地址为0x6F。芯片包含有两个Scratch寄存器,寄存器Index 分别为 0x12,0x13,可用于存储用户专用信息。
Python实现
C#实现
C#的I2C类库包含在GPIO package中,因此需要添加System.Device.Gpio包。代码实例如下:
成都英创信息技术有限公司 028-8618 0660