在《解密深入浅出ARM7-LPC213x_214x(上)》中,有一段关于用SSP做主SPI,SPI0做从机,两者进行数据传输的示例(P218)。在测试时,发现接收到的数据老是不对,本来应该是0~7,实际接收的是80H,00H,81H,01H,82H,02H,83H,03H。估计是时钟与数据位配合不对。经检查两者的初始化,发现SPI0与SSP都是采用CPHA=0,CPOL=1的配置,那么在SPI0接收时,与SSP一样,SSP在时钟下降沿将数据送出的同时,SPI0就开始采样,没有任何延时,使采集的数据产生错误。应该将采样时间延时,保证数据稳定后再采样。将SPI0改为CPHA=1,CPOL=1的配置,经过测试,接收的数据正常。 |