This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: 如何使用SPI实现一次一个字节数据的发送和接收?

Part Number: TMS320F28335

我希望使用SPI与一款电能采集芯片通信,它读取数据需要先发送1个字节,再等2us,然后接收3个字节。我看了手册发现SPI每次通信好像都要发送16位数据,也就是向TXBUFF里面写一次数据就触发一次16位的移位。我看到可以用SPICCR.0-3控制传输数据的长度,但是在实际使用的时候发现也还是一次移了16位,我就不清楚该如何进行配置操作,我没有检索到相关的资料就来这里问一下,希望能够得到帮助!

我使用loopback功能,配置SPICHAR为7,然后当我调用读写函数:temp4 = SPIA_SendReciveData(0xD312);得到的数据是0x12D3。看上去是依旧传送了16位,不应该是只传送了12,D3被忽略了,然后得到的数据是0x12吗

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void SPIA_Normal_Init(void)
{
//使SPIGPIO
EALLOW;
SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // 使SPI-A
EDIS;
InitSpiaGpio(); // SPIAGPIO
//SPIFIFO
//ResetSPIclock polarity=0沿沿使16
SpiaRegs.SPICCR.bit.SPISWRESET = 0;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
SpiaRegs.SPICCR.bit.SPILBK = 1;
SpiaRegs.SPICCR.bit.SPICHAR = 0x7;
//clock phase=1使
SpiaRegs.SPICTL.bit.OVERRUNINTENA = 0;
SpiaRegs.SPICTL.bit.CLK_PHASE = 1;
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;
SpiaRegs.SPICTL.bit.TALK = 1;
SpiaRegs.SPICTL.bit.SPIINTENA = 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX