打印

SPI配置及传输问题,求解答

[复制链接]
2215|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kwq8722|  楼主 | 2013-2-21 12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新手,用2809芯片控制GP21并读取数据,因为GP21只能传8位字节,因此配置函数如下
:void Spi_fifo_init()                       //子函数Spi_fifo_init(),SPI寄存器配置初始化函数
{
   SpibRegs.SPICCR.bit.SPISWRESET=0;       //重设SPI

   SpibRegs.SPICCR.all=0x0017;             //8字元传输,内部回接测试模式,
   SpibRegs.SPICTL.all=0x0017;             //中断致能,主控模式传输致能
   SpibRegs.SPISTS.all=0x0000;             //不作传出延迟
   SpibRegs.SPIBRR=0x0063;                 //波特率为(20Mhz/99+1)=200Khz/s
   SpibRegs.SPIFFTX.all=0xC028;            //致能FIFO,设定传出FIFO为8层
   SpibRegs.SPIFFRX.all=0x0028;            //设定接收FIFO为8层
   SpibRegs.SPIFFCT.all=0x00;              //没有TX延迟
   SpibRegs.SPIPRI.all=0x0010;             //当模拟除错发生,继续SPI运作

   SpibRegs.SPICCR.bit.SPISWRESET=1;       //放开SPI的重设

   SpibRegs.SPIFFTX.bit.TXFIFO=1;          //放开FIFO传出重设
   SpibRegs.SPIFFRX.bit.RXFIFORESET=1;     //放开FIFO接收重设
}
想问一下这么配置可以吗,而且要连续传输40个字节的数据,想问一下TMS的SPI读到哪条指令传输,啥时候执行下一条语句,并求问如果要读32字节的数据怎么写,貌似2809的寄存器是16位的。

相关帖子

沙发
hawksabre| | 2013-2-21 20:09 | 只看该作者
dsp这一块不是很了解   帮你顶一个  呵呵   

使用特权

评论回复
板凳
kwq8722|  楼主 | 2013-2-21 20:28 | 只看该作者
另外求问SPI的右对齐存储是什么意思,比如从机发送1234的话,2进制是0001001000110100,那SpibRegs.SPIRXBUF得到的值是0010110001001000,也就是2C48是吗,又或者从机发送的数据是处理过的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

12

帖子

0

粉丝