在移植软件IIC的过程中,遇到了一些问题,这是我的解决方法
1.IIC有delay要求,hal库只能提供ms级,使用systick配置us级配置相关原文链接:https://blog.csdn.net/qq_47713364/article/details/119917176
2.IIC协议在读取数据时或者产生应答时对管脚IO读取,因此不能单一的设置为输出,有时要配置成输入,使用寄存器配置SDA的输入和输出
原文链接:https://www.cnblogs.com/Montauk/p/5850344.html
/* 寄存器配置 */
#define IIC_SDA_IN {GPIOB->CRL&=0XFFF0FFFF;GPIOB->CRL|=(u32)8<<16;}//0所在的地方表示第几个寄存器(0-7)此时是PB4,8表示0x8就是1000,把CNF配置为10,MODE配置为00,左移16是PB4
#define IIC_SDA_OUT {GPIOB->CRL&=0XFFF0FFFF;GPIOB->CRL|=(u32)7<<16;}//0所在的地方表示第几个寄存器(0-7)此时是PB4,3表示0x3就是0010,把CNF配置为00,MODE配置为10,左移16是PB4
3.在使用逻辑分析仪分析IIC时序时,由于IIC是开漏模式,单独测试IIC的管脚PB3,4,无法读取到电平,在接入屏幕后在测试方可 参考文章:https://blog.csdn.net/as480133937/article/details/105366932
stm32 IIC软件移植过程 Delay_us IO端口方向配置 逻辑分析仪测IIC时序
最新推荐文章于 2023-08-12 11:07:44 发布