就用STMF4的库函数实现的,我看过探索者给的I2C源程序,用来和什么通信的我不认识,但是好像时序和我那个对不上,我就自己把以前51的程序重新翻译了份,挪用了源程序的
#define SDA_IN() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;} //PB9输入模式
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9输出模式
我的SDA是PA2。。不知道怎么改,主要切换输入输出模式嘛。。现在还没做出来忙了一天。。有谁做过这东西的告诉我怎么改,要注意点什么。。
如果你理解了开漏模式就知道为什么要拉高了,实际上,这里的拉高有的时候用更容易理解的“释放”来表示,也就是主机释放对SDA的控制权。释放之后,因为上拉电阻的缘故,所以就表现为高电平。因为此时要读取从机的数据,所以SDA由从机来拉高或拉低,主机就读取SDA的电平。用开漏模式就可以使SCL和SDA表现为双向口。而不必像原子做的那样,一会儿设置为输出,一会儿设置为输入,太麻烦了。
一周热门 更多>