本帖最后由 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的速度?这是因为595与165所支持的最高串行时钟频率不同,595高一些,超过40MHz,165低一些,一般最高到20MHz(关于这一点,振南进行了大量的测试)。切换SPI速率是为了尽量提高数据传输的速度,这对于一些高速应用的场合较有意义,比如存储器的数据读写或高速通信。 振南提供的LoopTest源代码,分为3个平台:51、STM32 M3 与M4。51比较简单,只是常规的SPI读写。M3与M4平台,振南提供了三种实现方案,它们的数据传输速度较有不同,分别是8位SPI方式、16位SPI方式,以及DMA方式,它们的数据传输速度也是越来越高。 具体能达到多高的数据传输速度,可以关注后续的测评。 源代码下载: 51平台 STM32 M3平台 STM32 M4平台
|