大家好:
使用过SPI通讯的高手们都知道,SPI通讯有单字节模式和多字节连续模式。而SPI通讯的过程是先拉低片选,再传送内容,再拉高片选以结束SPI通讯。LPC111x的片内SPI,虽然也可以工作在多字节连续传送模式,但有一个问题,它每次传送完一帧(通常是8 bit)后就拉高片选结束通讯了。这种通讯方式似乎违背了SPI多字节连续传送的特点。假如现在SPI从机上有一个16位寄存器,地址是两个字节编址的,那么要设置这个寄存器就需要传送4个字节过去,而在传送这四字节时片选要始终处于低电平,否则片选一拉高,写寄存器的操作也就取消了,那么使用LPC111x的外设模块就不能对这个SPI从机外设进行正确操作了。
不仅LPC111x的SPI有这个问题,TI的LM3S系列的Cortex芯片也有这样的问题,但是Atmel的8位AVR单片机就做的很好,把片选直接交给用户控制,而不是片内SPI模块自动控制,这样就解决了问题,真搞不懂为什么作为ARM处理器的LPC111x和LM3S等就没考虑到这个问题。
以上是我使用这个LPC111x与LM3S时的SPI时的一点小想法,可能存在不正确的地方,哪位高手如果有其他见解,请不吝赐教!谢谢。 |