打印
[STM32]

振南的 串行IO扩展模块 上的595+165 回环测试实验

[复制链接]
1282|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2015-12-11 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2015-12-11 14:07 编辑

QQ 987582714   QQ群198521880
http://www.znmcu.cn/mod_sios.html
振南的串行
IO
扩展模块 中的
595+165
回环测试

振南的串行IO扩展模块 中的595+165 回环测试
振南的串行IO扩展采用74HC595+165方式,可扩展出16位双向IO(可用于数据读写),以及8位单向输出端口(用于产生控制信号,如CS、地址信号等),同时还有3个可与单片机直接相连的IO(可用于快速信号的输入输出)。
清晰图可点击链接:
串行IO扩展模块拿到手之后,首先要对其进行测试,以确保它工作正常。具体的测试方案是:回环测试(LoopTest)。首先通过模块上的74HC595输出16位数据,然后再通过74HC165将其读回,看值是否一致。
测试代码如下:
int main(void)
{
  unsigned int i=0;
  delay_init();                              
  uart_init(115200);
  SIO_IO_INIT; //相关IO和SPI初始化
  while(1)
  {
HIGH_SPI_FOR_595; //将SPI切至高速,用于向595写入数据
SIO_Write_3595(i); //向595写入数据
LOW_SPI_FOR_165; //将SPI切至低速,用于向165写入数据
temp=SIO_Read_2165(); //从165读取数据
//如果读回的数据与写入的数据不一致,说明出现了错误
    if(temp!=i) {printf("SIO test Fail %04X\r\n",temp);while(1);}
else printf("Pass: %04X\r\n",temp); //一致则测试通过
i++;i%=65536;
  }
while(1);
}
测试结果:
为什么要频繁的切换SPI的速度?这是因为595165所支持的最高串行时钟频率不同,595高一些,超过40MHz165低一些,一般最高到20MHz(关于这一点,振南进行了大量的测试)。切换SPI速率是为了尽量提高数据传输的速度,这对于一些高速应用的场合较有意义,比如存储器的数据读写或高速通信。
振南提供的LoopTest源代码,分为3个平台:51STM32 M3 M451比较简单,只是常规的SPI读写。M3M4平台,振南提供了三种实现方案,它们的数据传输速度较有不同,分别是8SPI方式、16SPI方式,以及DMA方式,它们的数据传输速度也是越来越高。
具体能达到多高的数据传输速度,可以关注后续的测评。
源代码下载:
51平台
STM32 M3平台
STM32 M4平台

相关帖子

沙发
henglin| | 2017-1-28 22:24 | 只看该作者
Mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝