2812和M16用SPI通信的问题
主从的时钟到底该怎么设置?我做了好几次实验,2812用做主,M16做从
如果设置2812的CLK极性为0,相位为0,那么M16就要设置成CPOL=0 CPHA=1才能采到数据,而且出错率很高!
如果设置2812的CLK极性为0,相位为1,那么M16就要设置成CPOL=0 CPHA=0才可以。怎么SPI时钟的设置不是对应相同的呢?
我把2812的字符长度设为8位的,FIFO延时也要设为至少是1才可以通信
不会是晶振的问题,我把2812的频率已经设成够慢的了 已基本解决
用M16做主 2812的收发都没问题
用2812做主 双方的收发都还有问题
2812的晶振22.1184M 一倍频 低速时钟为4分频
SPIBRR设置为30的时候才没有检测到错误 根本不像说的不超过从设备主频的1/4就可以
M16的晶振7.3728M 你理解“不超过从设备主频的1/4”可能有问题。
AVR的SPI工作在从机时,SPI口的时钟设置,应该不超过主机SPI时钟的1/4。这个SPI时钟是指SPI口上SCK时钟的频率,不是2812的系统时钟,也不是AVR自己的系统时钟。
你的逻辑电路基础还需要加强。
页:
[1]