18475| 1
|
[教程] 《边学边用树梅派-9》树莓派 I2C 通信初探 I2C LCD及其ADC模 |
树莓派可以通过自己的GPIO上的I2C接口与外部的器件进行通信。SDA,SCL输出为5V左右。如图所示: 我们可以用这两个接口与外部的器件经行链接来学习一下树莓派的I2C用法。下面我们以树莓派通过I2C链接18位ADC芯片并通过I2C连接1602显示来带大家体验一下 先上一张显示的实现的效果图: (通过ADC的2路通道测试流过电阻电流和LED的压降,分别利用单端差分放大和双端差分放大) 准备的器件: 1、树莓派(这个必须要有) 2、DFRobot I2C LCD1602液晶模块(I2C接口的,如果你是普通的1602的话请按这个方法接: GND 接 GND VCC 接 5V SDA 接模拟口 A4 SCL 接模拟口 A5) 3、DFRobot 最新出品的 MCP3424 18位AD转换模块(通过差分放大来检测电压) 4、杜邦线若干(面包板上插线用) 5、红色LED小灯(测试分压) 6、1K欧电阻(测试分压) 7、屏幕(这个必须要,否则你都不知道自己输了什么) 8、键盘(必要的东西) 9、鼠标(如果你不进入图形界面可以不用管) 10、网线(下载驱动) 11、面包板(便于插芯片和电路搭接) 第一步: I2C设备的设置见前面的文章:《边学边用树莓派-4》I2C总线的使用 第二步: 我们既然安装了Python-smbus就可以利用smbus内部的函数来控制树莓派的GPIO的I2C 我们可以利用Python新建一个test.pytest.zip的文件 我们还需要1602的Python库,直接下载即可,也可以直接从网上下载LCD1602.zip 第三部: 打开finaltest.py看到函数: 下面我来解释一下(#后面的文字即为解释)
第四步: 我们开始搭我们的电路 所有的I2C都在2根SDA和SCL上 然后我们点击F5或者运行就可以了。 大家就会发现LCD1602的上面正显示着当前的电压和电流。 总结: 用smbus库函数来控制I2C的通信非常方便,I2C设备一般都是先发送地址(可以用I2C tools检测,也可以看技术文档),然后发送配置文件(有些需要寄存器地址),然后接受(有些芯片是写在寄存器内,这时你需要先发送寄存器地址再接收数据,有些芯片是直接发送数据,这时请不要在发送完配置文件或者接收8位数据后延时或者使用其他函数)。暂时就写到这,有什么好的意见或者不对的地方欢迎大家指正。 |
你好,我现在用的是树莓派B,使用i2ctool能找到设备的地址0x40,0x44,0x60,但是在使用write_i2c_block_data(0x60,0x32,[0x7d,0s40,0x11,0x40])这组数据进行收音机操作时,出现Input/Output error,这几个设备没有寄存器是直接操作数据的,请指教一下,谢谢! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed