找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5034|回复: 2
打印 上一主题 下一主题
收起左侧

关于调试stm32和stm8(51单片机)的i2c和spi协议的之间的区别

[复制链接]
跳转到指定楼层
楼主
ID:262 发表于 2014-5-30 05:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在调试STM32的i2c和io口模拟spi协议时发现时序是很关键的。stm32在72M运行下可以实现i2c或者spi协议,但并不代表把相同的代码移植到51单片机上就会成功的跑起来,因为51单片机的速读最块8M,所以在时序上会产生很多大的区别。经过测试,在stm32上的spi协议时钟线可达到20Khz,移植到51后,频率会降到<10hz。可是尽管把延时调小或者去掉还是无济于事,此时就要加几句把钟线置高置低的语句了以便增大的速度,后来成功后,测试时钟线的确达到了10Khz左右。
先贴上部分代码
unsigned char ReadRawRC(unsigned char Address)
{
    unsigned char i, ucAddr;
    unsigned char ucResult=0;

    MF522_SCK = 0;
    MF522_NSS = 0;
     ucAddr= ((Address<<1)&0x7E)|0x80;

    for(i=8;i>0;i--)
    {
        MF522_SI =((ucAddr&0x80)==0x80);
        MF522_SCK = 1;//stm32上没有
        ucAddr <<= 1;
        MF522_SCK = 0;
    }

    for(i=8;i>0;i--)
    {
        MF522_SCK = 1;//stm32上没有
        ucResult <<= 1;
        ucResult|=(bit)MF522_SO;
        MF522_SCK = 0;
    }

    MF522_NSS = 1;
    MF522_SCK = 1;
     returnucResult;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1023716 发表于 2022-12-20 18:26 | 只看该作者
这个贴子对我刚开始学STM8的人很重要。谢谢楼主的分享。
回复

使用道具 举报

板凳
ID:830831 发表于 2022-12-21 08:44 | 只看该作者
首先,stm的 I2C 协议有坑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表