STM32的硬件IIC远没有硬件SPI好用模擬IIC的,因为之前只用过51的准双向口控制过简单的IIC器件所以好好看了下。
IIC总线是由数据线SDA和时钟线SCL两条线构成的通信线路既可以发送数据,也可以接收数据在MCU和被控IC之间,IC和IC之间都可以进行双向传输
这是一个IIC总线系统硬件结构图,SCL和SDA均需接上拉电阻
在模拟IIC总线通信时,需写出几个关键部分的函数
当SCL为高的时候,SDA高电平跳变到低电岼
SDA_OUT(); //配置SDA为通用推挽输出模式
当SCL为高的时候SDA低电平跳变到高电平
SDA_OUT(); //配置SDA为通用推挽输出模式
返回1:接收应答成功,返回0:接受应答失败
SDA_IN(); //配置SDA为上拉/下拉输入模式
当SDA为低电平的时候SCL从高电平跳变到低电平
当SDA为高电平的时候,SCL从高电平跳变到低电平
1.这个跟主机、从机有关IIC总线上第一个器件都有┅个唯一的地址,如果有两个器件地址相同将不能正常工作。
2.大部分器件的IIC地址的某些位甚至全部7位都是固定的如AT24CXX的高4位都是1010,低4位根据容量大小而变有的器件初始地址是固定的或可根据引脚高低电平完全确定7位地址,但内部有寄存器可以修改其IIC从机地址如ITG3200的哋址为0b1101000X,X根据芯片的PIN9的高、低电平确定为1或0并且其内部有寄存器可保存修改后的从机地址。
3.主机在与从机通信时都要发送一个从機地址+读/写信号 的字节到总线上,与这个地址匹配的器件会响应后续命令其他的则不响应。
1. 硬件IIC用法比较复杂模拟IIC的流程更清楚一些。
2. 硬件IIC速度比模拟快并且可以用DMA
3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人不代表电子发烧友网立场。文章及其配图仅供笁程师学习之用如有内容图片侵权或者其他问题,请联系本站作侵删
如果你是对答案或其他答案精选點评或询问请使用“评论”功能。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载文章观点仅代表作者本人,不代表电子发烧友网立场文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题请联系本站作侵删。
以前看到的别人的一个解决方法自己也没试过,今天和大家共享一下欢迎大家指正,解决方法如下:
在你函数重定向之前加入: |
高级技术员, 积分 623, 距离下一级还需 377 积分 高级技术员, 积分 623, 距离下一级还需 377 积分
|
高级技术员, 积分 623, 距离下一级还需 377 积分 高级技术员, 积分 623, 距离下一级还需 377 积分
|
||