1.环境 ubuntu操作系统
2.开发板 stm32mp157a
一. 我们要在si7006传感器读取温湿度首先要分析电路图以及传输总线
1.在传感器带的元器件手册中可以知道温湿度是i2c通信,并且连接到了I2C1_SDA,和I2C1_SCL两条线上。
(1)i2c知识的扩展
I2C(Inter-Integrated Circuit)是一种串行通信协议,他是双线接口制,SCL时钟信号,由主设备控制,SDA数据线,用于主从设备间的数据传输。i2c是多主多从方式,允许多主设备和多从设备连接在同一总线上,主机通过从机地址来识别设备。

2.由扩展板的引脚图可以知道传感器的时钟线和数据线分别连接的GPIO引脚。

3.根据扩展板上的引脚图我们可以的到这样一个简易版电路连接图

二. 根据电路图的分析来编写设备树
1.分析设备树之前,我们要做的就是在内核目录下执行make menuconfig命令进入内核菜单选项,将i2c的核心层和总线驱动层选配到内核中

将上述的代码配置到内核之后,重新编译内核 make uImage LOADADDR=0xc2000000 -j4
2.那要怎么更改设备树呢?让我们逐步引进

根据上图我们知道了I2C1的首地址是0x40012000,根据这个选项我们可以在设备树stm32mp151.dtsi中进行搜索之后定位到i2c1设备树节点。

之后我们可能会疑惑要怎么根据这个设备节点编写属于自己的设备树呢?
内核中都是带着设备树的使用文档的,我们可以去文档中找寻答案。
进入帮助文档中的i2c目录下我们会发现有很多系列的帮助文档,当下用的是st的芯片,所以就要寻找st系列的帮助手册。打开手册查看示例。

1233

被折叠的 条评论
为什么被折叠?



