检查板上的ADC芯片,DAC芯片数据与ARM相连都是用SPI通信连接,并且因为所以的ARM芯片是购买的核心板,其接口并没有引出地址信号线,所以与FPGA之间的通信我也使用是SPI通信。
一、SPI通信,共四个引脚实现
①MISO:主输入从输出(连ADC,DAC的DOUT管脚)当然反过来也行,看程序怎么编。
②MOSI:主输出从输入。
③SCLK:显然是时钟(“读”,“写”数据时判断数据接受和发送)。
④NSS:片选主要是持续稳定的输出高电平(低电平)。
其示意图如下:
上图是原理图中ARM和ADC直接的连线。
上图是SPI通信的示意图。
二、SPI通信的实现:
①首先NSS引脚变换电平选中芯片,SPI芯片开始工作。
②发送时钟信号:开始进行“读”/“写”
③MOSI(“写”):主机(M)发送数据到缓存区(主机),经过移位寄存器发送到从机(S),从机经过移位寄存器把数据放到缓存区(从机)。
插图(等周末想起来就更新)
④MISO(“读”):从机(S)发送数据到缓存区(从机),经过移位寄存器发送到主机(M),主机经过移位寄存器把数据放到缓存区(主机)。
插图(等周末想起来就更新)
“读”和“写”可以同时进行,也可以分开进行,只“读”时主机发送空数据即可,只“写”时主机忽略接受的数据。
就ADC而已不同芯片的使能不同,所以要和软件沟通好,或者发给他芯片手册。
三、优缺点
就我而言检测板只需要检测信号是否正常,功能是否正常在FPGA和ARM之间通信时可以省略数据和地址线(可能吧,有大佬晓得的提醒下,我是和组内讨论说仅仅是需要简单传输数据的功能)。
我查的资料中
优点:
无启动和停止位,数据可流式传输而不会中断
无I2C那种复杂的从地址系统(从设备寻址系统)
速率高于I2C
可同时收发数据
更灵活的数据传输:不限于8位,可以任意大小的字
硬件简单,确实这方面深有体会,就是因为硬件接口资源不够我才问SPI通信的。从站不用唯一地址(与I2C不同),从机使用主机时钟,不用精密时钟振荡器/晶振(与UART不同),不用收发器(与CAN不同)
缺点:
用四根线(在我这里四根是少的,因为ARM和FPGA通信更多)
无校验是否成功接受数据(I2C有)
无UART的奇偶检验位类似的错误检测
仅允许单个主机
无从机应答信号
无硬件级别的错误检查协议
与RS-232和CAN相比仅支持短距离传输
看完资料发现我还得了解下CAN,I2C,UART协议,虽然我不需要会用但是还是得了解的。