来源:飞凌嵌进式官网
SPI是一种高速的、全双工、同步的通信总线,而且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的规划节约空间,供给便利,恰是出于那种简单易用的特征,如今越来越多的芯片集成了那种通信协议。
TI AM62x处置器拥有4路SPI以及1路QSPI,丰富的SPI接口能够同时接多个设备,飞凌OK6254-C开发板的NOR Flash就接在了OSPI(QSPI)总线上。
OK6254-C开发板
1. SPI的工做流程和时序
在介绍AM62x的SPI之前,我们先来领会一下SPI是若何工做的。凡是SPI通过4个引脚与外部器件相连:
MISO:
主设备输进/从设备输出引脚。该引脚在从形式下发送数据,在主形式下领受数据;
MOSI:
主设备输出/从设备输进引脚。该引脚在主形式下发送数据,在从形式下领受数据;
CLK:
串口时钟,做为主设备的输出,从设备的输进;
NSS:
从设备抉择。那是一个可选的引脚,用来抉择从设备。
SPI的工做流程是如许的——
主机先将NSS信号拉低,如许包管起头领受数据;
当领受端检测到时钟的边缘信号时,它将立即读取数据线上的信号,如许就得到了一位数据(1bit);
因为时钟是随数据一路发送的,因而指定命据的传输速度其实不重要,虽然设备将具有能够运行的更高速度;
主机发送到从机时:主机产生响应的时钟信号,然后数据一位一位地将从MOSI信号线长进行发送到从机;
主机领受从机数据:假设从机需要将数据发送回主机,则主机将陆续生成预定命量的时钟信号,而且从时机将数据通过MISO信号线发送。
SPI工做时序图如下:
2. AM62x中SPI总线的特征
在AM62x那款芯片中,TI将SPI的MISO与MOSI设想为d0和d1,哪一个做为输进,哪一个做为输出,是由设备树中的ti,pindir-d0-out-d1-in= 1来设置的。
默认那个属性值为0,即d0是输进,d1是输出。当为1时,d0为输出,d1为输进。
3. AM62x的SPI利用
1. menuconfig设置装备摆设
将那个该项选中,SPI驱动将编译进内核中。
makemenuconfi
DeviceDrivers -
SPIsupport -
Usermode SPI device driver support
注:在飞凌OK6254-C开发板中,已经将SPI驱动编译进往。
2. 设备树设置装备摆设
(1)抉择需要利用的spi,那里我们用spi0,节点为main_spi0;
(2)将该节点所用的引脚复用为响应的功用。
(3)描述节点的属性,详细设置装备摆设项的功用见正文。
3. 编译烧录
在源码途径下输进以下号令:
没有报错即为编译胜利。
将源码途径下的image中的OK6254-C.dtb放到开发板的/boot目次中,重启开发板。
4. SPI测试
将spi0_D0和spi0_D1短接
重启开发板后,在/dev目次下看到多出两个spidev设备。
利用我们的测试法式
有如下打印信息即为胜利:
spimode: 0
bitsper word: 8
maxspeed: 42000 Hz (42 KHz)
FFFF FF FF FF FF
4000 00 00 00 95
FFFF FF FF FF FF
FFFF FF FF FF FF
FFFF FF FF FF FF
DEAD BE EF BA AD
F00D
4. 总结
AM62x上有着丰富的SPI资本,而SPI又能够做为许多设备的总线,那使得AM62x可以接进许多SPI接口的设备。因而在那些对SPI有着比力多需求的利用场景下,基于TI AM62x设想开发的OK6254-C开发板无疑是一个十分好的抉择。