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

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

  5.     MF522_SCK = 0;
  6.     MF522_NSS = 0;
  7.      ucAddr= ((Address<<1)&0x7E)|0x80;

  8.     for(i=8;i>0;i--)
  9.     {
  10.         MF522_SI =((ucAddr&0x80)==0x80);
  11.         MF522_SCK = 1;//stm32上没有
  12.         ucAddr <<= 1;
  13.         MF522_SCK = 0;
  14.     }

  15.     for(i=8;i>0;i--)
  16.     {
  17.         MF522_SCK = 1;//stm32上没有
  18.         ucResult <<= 1;
  19.         ucResult|=(bit)MF522_SO;
  20.         MF522_SCK = 0;
  21.     }

  22.     MF522_NSS = 1;
  23.     MF522_SCK = 1;
  24.      returnucResult;
  25. }
复制代码


回复

使用道具 举报

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

本版积分规则