完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
用OD模式,手册里说OD模式可以读取输入电平,这样输入输出都有了
sda是pc8,scl是pc6, void I2C_CONFIG(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Pin=SCL_PIN|SDA_PIN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(I2C_PORT, &GPIO_InitStructure); GPIO_SetBits(I2C_PORT, SCL_PIN); GPIO_SetBits(I2C_PORT, SDA_PIN); } 等待应答 就这几个基础的程序,等待应答等不到,在做max30100模块,数据不对,调试发现等待应答等不到低电平,请大神指点一下吧,解决问题后可以加微信发红包表达感谢。 u8 I2C_Wait_ACK(void) { u8 flag=0; I2C_SDA_1(); delay_us(5); I2C_SCL_1(); delay_us(5); if(I2C_SDA_READ()) { flag=1; } else { flag=0; } // while(I2C_SDA_READ()!=0) // { // flag++; // if(flag>250) // { // I2C_Stop(); // return 1;//ûÓнÓÊÕµ½Ó¦´ð // } // } I2C_SCL_0(); delay_us(5); return flag;//½ÓÊÕµ½´Ó»úµÄÓ¦´ð } 开始 void I2C_Start(void) { I2C_SCL_1(); I2C_SDA_1();//¶¼ÊǸߵçƽ delay_us(5); I2C_SDA_0();//ÔÚscl¸ßµÄÇé¿öÏ£¬sda´Ó¸ßµ½µÍ delay_us(5); I2C_SCL_0();//sclµÍ£¬Îª·¢ËÍÊý¾Ý×ö×¼±¸ delay_us(5); } 停止 void I2C_Stop(void) { I2C_SCL_1(); I2C_SDA_0();// delay_us(5); I2C_SDA_1();//ÔÚscl¸ßµÄÇé¿öÏ£¬sda´ÓµÍµ½¸ß // delay_us(5); } 发送一个字节 void I2C_Send_Byte(u8 byte) { u8 i; for(i=0;i<8;i++) { if(byte&0x80)//ÅжϵÚһλÊÇ·ñΪ1 { I2C_SDA_1(); } else { I2C_SDA_0(); } delay_us(5);//Êý¾ÝÏ߱仯ºó£¬sclÀ¸ß£¬¶Áµ½sdaµÄÊý¾Ý I2C_SCL_1(); delay_us(5); I2C_SCL_0();//sclÀµÍ£¬·¢ËÍÏÂһλÊý¾Ý if(i==7) { I2C_SDA_1();//8λ½áÊøºó£¬sdaÀ¸ß£¬ÊÍ·ÅsdaÏߣ¬ } byte<<=1; delay_us(5); } } 读取一个字节 u8 I2C_Recive_Byte(void) { u8 i,value=0; for(i=0;i<8;i++) { value<<=1; I2C_SCL_1(); delay_us(5); if(I2C_SDA_READ()) { value++; } // delay_us(5); I2C_SCL_0();//Êý¾ÝÏß delay_us(5); } return value; } |
|
相关推荐
4个回答
|
|
如果输入模式是OD需要外部电路接上拉,不然没法读高电平,如果外部没有上拉就程序配置为上拉输入
|
|
|
|
谢谢分享!!!谢谢分享!!!谢谢分享!!!
|
|
|
|
|
|
|
|
你好,我是买的模块,是有上拉电阻的。上拉电阻4.7kΩ,上拉到1.8V,也应该能读取到1吧。这个就是血氧模块,max30100. 另外,如果设置成上拉输入,就不能输出高、低电平了吧 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 15:55 , Processed in 0.648145 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号