TI中文支持网
TI专业的中文技术问题搜集分享网站

28035的SPIB的寄存器不能改变问题

各位工程师:

         大家下午好。我使用的MCU是28035,是在DC Power-Line Communication的代码平台上进行修改和移植。但是在添加SPIB总线的功能时,发现初始化的时候不能够更改SPIB寄存器里面的值,操作寄存器没有反应。当修改为操作SPIA时,可以进行修改。不知道这个是什么原因?还请大家能帮助解答一下。下面是我的初始化:

    

EALLOW;
SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

SpibRegs.SPICCR.all=0x000F; //16-bit character
SpibRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpibRegs.SPISTS.all=0x0000;
SpibRegs.SPIBRR=0x0063; // Baud rate
//SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpibRegs.SPIFFCT.all=0x00;
SpibRegs.SPIPRI.all=0x0010;

SpibRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI

SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;
EDIS;

Joey Mao:

你的寄存器的初始化应该没有问题,有没有先初始化SPI的GPIO呢?

各位工程师:

         大家下午好。我使用的MCU是28035,是在DC Power-Line Communication的代码平台上进行修改和移植。但是在添加SPIB总线的功能时,发现初始化的时候不能够更改SPIB寄存器里面的值,操作寄存器没有反应。当修改为操作SPIA时,可以进行修改。不知道这个是什么原因?还请大家能帮助解答一下。下面是我的初始化:

    

EALLOW;
SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

SpibRegs.SPICCR.all=0x000F; //16-bit character
SpibRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpibRegs.SPISTS.all=0x0000;
SpibRegs.SPIBRR=0x0063; // Baud rate
//SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpibRegs.SPIFFCT.all=0x00;
SpibRegs.SPIPRI.all=0x0010;

SpibRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI

SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;
EDIS;

liangheng feng:

回复 Joey Mao:

嗯,我初始化前已经初始化gpio了:

GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 3; // Configure GPIO24 as SPISIMOB

GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; // Configure GPIO13 as SPISOMIB

GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; // Configure GPIO14 as SPICLKB

GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3; // Configure GPIO15 as SPISTEB

主要是:我通过CCS查看寄存器的值,单步执行初始化的步骤,但是寄存器的值还是0,没变化。我改SpibRegs为SpiaRegs时,通过CCS查看a的寄存器就有变化。

谢谢你的答复,麻烦再帮我看下,谢谢。

各位工程师:

         大家下午好。我使用的MCU是28035,是在DC Power-Line Communication的代码平台上进行修改和移植。但是在添加SPIB总线的功能时,发现初始化的时候不能够更改SPIB寄存器里面的值,操作寄存器没有反应。当修改为操作SPIA时,可以进行修改。不知道这个是什么原因?还请大家能帮助解答一下。下面是我的初始化:

    

EALLOW;
SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

SpibRegs.SPICCR.all=0x000F; //16-bit character
SpibRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpibRegs.SPISTS.all=0x0000;
SpibRegs.SPIBRR=0x0063; // Baud rate
//SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpibRegs.SPIFFCT.all=0x00;
SpibRegs.SPIPRI.all=0x0010;

SpibRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI

SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;
EDIS;

Joey Mao:

回复 liangheng feng:

SPIA和SPIB没有区别,初始化一样的话应该都没有问题,你一直是单步调试的,没有全速运行测试过?观察寄存器的时候实时刷新了吗?

各位工程师:

         大家下午好。我使用的MCU是28035,是在DC Power-Line Communication的代码平台上进行修改和移植。但是在添加SPIB总线的功能时,发现初始化的时候不能够更改SPIB寄存器里面的值,操作寄存器没有反应。当修改为操作SPIA时,可以进行修改。不知道这个是什么原因?还请大家能帮助解答一下。下面是我的初始化:

    

EALLOW;
SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

SpibRegs.SPICCR.all=0x000F; //16-bit character
SpibRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpibRegs.SPISTS.all=0x0000;
SpibRegs.SPIBRR=0x0063; // Baud rate
//SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpibRegs.SPIFFCT.all=0x00;
SpibRegs.SPIPRI.all=0x0010;

SpibRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI

SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;
EDIS;

liangheng feng:

回复 Joey Mao:

有全速运行,寄存器结果也一样,实时手动刷新都有。用TI的SPI例程可以改变,但是在PLC程序里面就不行,请问程序哪里可以做限制吗?

各位工程师:

         大家下午好。我使用的MCU是28035,是在DC Power-Line Communication的代码平台上进行修改和移植。但是在添加SPIB总线的功能时,发现初始化的时候不能够更改SPIB寄存器里面的值,操作寄存器没有反应。当修改为操作SPIA时,可以进行修改。不知道这个是什么原因?还请大家能帮助解答一下。下面是我的初始化:

    

EALLOW;
SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

SpibRegs.SPICCR.all=0x000F; //16-bit character
SpibRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpibRegs.SPISTS.all=0x0000;
SpibRegs.SPIBRR=0x0063; // Baud rate
//SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpibRegs.SPIFFCT.all=0x00;
SpibRegs.SPIPRI.all=0x0010;

SpibRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI

SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;
EDIS;

liangheng feng:

回复 liangheng feng:

PLC程序里面使用了csl_f2803x.lib这个库,不知道这个库能不能限制SPIB的初始化,因为这个库封装起来了,看不到具体的实现,还希望TI的工程师能够帮我解答一下。我程序的功能真的很需要SPIB来实现。

谢谢了。

赞(0)
未经允许不得转载:TI中文支持网 » 28035的SPIB的寄存器不能改变问题
分享到: 更多 (0)