模拟IIC移植

因工程需要,需要将stm32f103上的模拟IIC移植到stm32f415上,对比了下不同,发现只有主频提高了,别的都一样。可移植后读数一直不正确。

第一次调试这种模拟通信电路,于是将其放在while循环里,观看其数字波形。通过原始直接的读数方法判断通信过程中的电平变化。

经比对发现写字节时波形和延时正常,但读数时总会出现ff;开始用的原子哥的程序,然后找了个同事用过的对比,发现在读数据时

u8 IIC_Read_Byte(unsigned char ack)
{
unsigned char i,receive=0;
SDA_IN();//SDA设置为输入
    for(i=0;i<8;i++ )
{
        IIC_SCL0; 
        delay_us(2);
IIC_SCL1;
        receive<<=1;
delay_us(2);
        if(READ_SDA)receive++;   
delay_us(1); 
    }  
//     if (!ack)
//         IIC_NAck();//发送nACK
//     else
//         IIC_Ack(); //发送ACK   
    return receive;
}

在if(READ_SDA)receive++; 前应加入红色延时函数,就是当始终稳定一下在读数;


一个小小的问题可能就会将项目时间推后,如同本次的延时,细节很重要。感谢网上贡献资源的大侠们~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值