IIC的时序,将战舰V2的IIC移植到自己的板子后,修改SDA,SCL引脚,时钟,IO口方向后,一直不能写入,逻辑分析仪抓取引脚如图一,测得战舰的引脚如图二,一直不明白是为什么成了图一这个样子,是IO口方向不对吗,我是按照图三配置的 //IO方向设置 #define SDA_IN() {GPIOB->CRL&=0XF0FFFFFF;GPIOB->CRL|=0X08000000;} #define SDA_OUT() {GPIOB->CRL&=0XF0FFFFFF;GPIOB->CRL|=0X03000000;} //IO操作函数 #define IIC_SCL PBout(7) //SCL #define IIC_SDA PBout(6) //SDA #define READ_SDA PBin(6) //输入SDA void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //RCC->APB2ENR|=1<<4;//先使能外设IO PORTB时钟 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); IIC_SCL=1; IIC_SDA=1; } |
å¾ä¸
å¾äº
å¾ä¸1
å¾ä¸2
图一是我的板子的,是有问题的,图二是战舰板子的,是正确的,
好的,谢谢。这么客气,算了不纠结这个了,直接交叉飞个线试一试
等应答位时,如果IO是PP模式,那么把SDA置为输入方向;OD模式,不用切方向。
你这移植的不细心呀,程序问题。
非常同意