SPI设置
时间:10-02
整理:3721RD
点击:
帮我看看设置那里错了吗?
为什么调试的时候,SPITXBUF的数据0x4141 总是没发出去呢!?
Test_flag4 也是0,我想着就没收到数据,好象根本就没发出来??
那位高手帮我看看啊,非常感谢!
EALLOW;
GpioMuxRegs.GPFMUX.all = 0x000F; //设置GPIO工作在SPI的功能
EDIS;
SpiaRegs.SPIFFTX.all = 0xE040;
SpiaRegs.SPIFFRX.all = 0x204F;
SpiaRegs.SPIFFCT.all = 0x0;
SpiaRegs.SPICCR.all = 0x000F; //SPI复位,设置时钟为上升沿, 16位字符长度
SpiaRegs.SPICTL.all = 0x0006; //使能主模式,标准相位
SpiaRegs.SPIBRR.all = 0x007F;
//退出复位状态
SpiaRegs.SPICCR.all = 0x009F; //使SPI退出复位状态 使能自测试模式
var3 = 0x4141;
SpiaRegs.SPITXBUF = var3;
while(SpiaRegs.SPIFFRX.bit.RXFFST!=1){}
Test_flag4 = SpiaRegs.SPIRXBUF;
if(Test_flag4!=0x4141) error(1);
为什么调试的时候,SPITXBUF的数据0x4141 总是没发出去呢!?
Test_flag4 也是0,我想着就没收到数据,好象根本就没发出来??
那位高手帮我看看啊,非常感谢!
EALLOW;
GpioMuxRegs.GPFMUX.all = 0x000F; //设置GPIO工作在SPI的功能
EDIS;
SpiaRegs.SPIFFTX.all = 0xE040;
SpiaRegs.SPIFFRX.all = 0x204F;
SpiaRegs.SPIFFCT.all = 0x0;
SpiaRegs.SPICCR.all = 0x000F; //SPI复位,设置时钟为上升沿, 16位字符长度
SpiaRegs.SPICTL.all = 0x0006; //使能主模式,标准相位
SpiaRegs.SPIBRR.all = 0x007F;
//退出复位状态
SpiaRegs.SPICCR.all = 0x009F; //使SPI退出复位状态 使能自测试模式
var3 = 0x4141;
SpiaRegs.SPITXBUF = var3;
while(SpiaRegs.SPIFFRX.bit.RXFFST!=1){}
Test_flag4 = SpiaRegs.SPIRXBUF;
if(Test_flag4!=0x4141) error(1);
SpiaRegs.SPICCR.all = 0x009F?
自测?
外部收不到的
var3 = 0x4141;
SpiaRegs.SPITXBUF = var3;
这两句只能产生16个时钟,不知道你用示波器怎么测的,几乎是一晃而过,很难观测,建议你监测SPITXBUF和SPIDAT里的数据是否一样,如过SPIDAT的值产生移位了就肯定发了!