使用dsPIC33FJ32MC204芯片, 工作于带片选16位从SPI模式。
SPI1CON1bits.DISSCK = 0;
SPI1CON1bits.DISSDO = 0;
SPI1CON1bits.MODE16 = 1;
SPI1CON1bits.SMP = 0;
SPI1CON1bits.CKE = 0;
SPI1CON1bits.CKP = 1;
SPI1CON1bits.SSEN = 1;
SPI1CON1bits.MSTEN = 0;
当接受一个16位数, 发现一个怪问题, 其收到的16位数就是我写入SPI1BUF中的数左移一位, 即使关闭SDO输出(DISSDO=1)也一样。但一旦设置为8位模式(MODE16=0)则可以接收前面8位数。同样硬件在8位从SPI模式可以工作,说明接线没有问题。
后来改用dsPIC33FJ64MC510, 则发现片选引脚SSI1(RB2)有问题, 将其拉成高电平也能接收。开始怀疑SSI的接线不正确, 采用帧SPI主模式做了一下测试, 在RB2的引脚上确实有帧脉冲输出, 接线上也应该没有问题。
有哪位仁兄用过dsPIC33的从SPI模式, 盼望指教一下, 谢谢。 |