微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 关于调试stm32和stm8(51单片机)的i2c和spi协议的之间的区别

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

时间:11-27 来源:互联网 点击:
在调试STM32i2c和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;

return ucResult;

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top