其他分享
首页 > 其他分享> > SIM32任意引脚模拟IIC

SIM32任意引脚模拟IIC

作者:互联网

关于模拟I2C,任意接口都可模拟(未全部测试,可能存在特殊情况)。

关于SDA_IN与SDAOUT:如下定义:

举例:
#define MPU_SDA_IN() {GPIOA->CRL&=0XFFFF0FFF;GPIOA->CRL|=8<<12;}
#define MPU_SDA_OUT() {GPIOA->CRL&=0XFFFF0FFF;GPIOA->CRL|=3<<12;}
原因:可选A\B\C\D\E任意接口引脚,低8位接口引脚(即0-7)选用CRL,高8位接口(即8-15)选用CRH;
选用3位时,查找该3位置于CRL/CRH寄存器哪一处,该n位占寄存器中4个位(共32个位,4x8=32),刚好
对应上面的0xFFFFFFFF这8位,当选第3位(0开始)时,即为0xFFFF0FFF的第4位(下图中,红字1234即为第0位);

 

                   图CRL寄存器


上面的左移前面的8和3为默认,后面的12查看CRL寄存器的MODE3开始于12位,即用12(见上图)。其他类似。
具体原理细看CRL/CRH寄存器。(未学习STM32寄存器,具体原理未知,仅为个人测试通过,并不包含具体原因及细节。)

标签:12,引脚,GPIOA,IIC,寄存器,CRH,SIM32,CRL
来源: https://www.cnblogs.com/wdndmfirst/p/STM32-IntelligentVehicle-Simulation_IIC_Pin.html