我想从一个proc(master)发送字符串到另一个(slave),然后从slave中读取字符串。
目前我正在混合使用arduino和LPC1788,使用lpc作为主服务器,使用arduino作为slave。 LPC正确发送了正确的字符串,这是由ISR中的arduino接收的。在循环函数中,我检查是否收到了所有字符,然后尝试发回字符串。在LPC方面,ISR由于某种原因不起作用。我已将SR设置为
SR = (1<<TNF) | (1<<RNE);
所以我在从LPC发送字符串然后从arduino发起读取后放了延迟。
我在洛杉矶看到的发送字符串是:
但是从Arduino读取字符串看起来很奇怪(字符串应该是“Pong \ n”,它并不总是P我收到的......它有所不同)
我猜大多数问题都在发送和读取SPI缓冲区的同步范围内。如何在LPC上没有功能性ISR的情况下实现这一目标?
答案 0 :(得分:0)
SPI规范规定CS(SSEL)线应在帧期间有效,并在两者之间变为无效。恩智浦将此解释为一个单词。这意味着由SSP块生成的CS(对于传统SPI也是如此)仅在一次最多16位的事务期间有效。
另请注意,发送的字/帧之间始终存在间隙。因此,即使填充FIFO或使用DMA,您也会看到16个时钟脉冲,一个短暂的延迟,然后是16个脉冲。
当使用GPIO引脚作为SSEL时,请注意您必须等待SSEL断言或取消断言,直到外设空闲为止。