本文介绍一种自定义SPI通信协议。
项目开发过程中,有时候会涉及到主处理器或FPGA和MCU之间的SPI通信,涉及到通信就需要考虑通信协议,本文给出一种简单的通信协议。
1.协议格式
协议格式如下图。
其中,将40 bit划分为2大部分,控制部分和数据部分。
1)控制部分用于寻址及读/写控制。可以将31 bit或24 bit定义为读写位(1代表读,0代表写),另外7 bit作为地址(最大寻址128个寄存器地址)。
2)数据部分用于往寄存器写数据或用于读寄存器返回数据。在写数据时,MOSI上32 bit为要往寄存器写的数据,在读数据时,MOSI为空(0x00)或忽略,主设备产生时钟,MISO上32 bit为从设备返回的数据。
图中的32 bit data并不是固定的,也可以根据实际情况定义为8 bit或16bit等。
2.寄存器定义
寄存器定义可按下表进行描述。
address | register name | default value | R/W | description |
0x01 | CTRL0 | 0x00 | RW | Bit[0]: |
0x02 | CTRL1 | 0x00 | RW | Bit[0]: |
3.SPI时序
SPI时序可采用模式3(最常使用),时序如下图。通信速度可根据实际情况定义,如10MHz,20MHz。
参考:
ADI,TMC2130 Datasheet
总结,本文介绍了一种自定义SPI通信协议。