#define SCL_H GPIO_SetBits(GPIOB , GPIO_Pin_6)
#define SCL_L GPIO_ResetBits(GPIOB , GPIO_Pin_6)
#define SDA_H GPIO_SetBits(GPIOB , GPIO_Pin_7)
#define SDA_L GPIO_ResetBits(GPIOB , GPIO_Pin_7)
#define SCL_read GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_6) */
#define SDA_read GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_7)
#define SDA_IN() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;}
#define SDA_OUT() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;}
i2c本身的程序是没什么问题的,主要的问题还是出在了io的配置上面。
之前的sda和scl是用寄存器的方式置0置1,但实际上没有用,后来用示波器一步一步的查的,IO输入输出没问题后程序的读写是没什么问题了。我外接了mpu9250的模块,200hz正常读取了,但板子上本身焊接的9150读出来的全是7f,磁力计的配置没有写进去。原因还在找,感谢这两天大家给我提的建议,顺利的解决的i2c这块的问题。再次感谢小小小小白,昨天也帮我调试。谢谢大家。 |