各位工程师:
大家下午好。我使用的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来实现。
谢谢了。