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.

[参考译文] CCS/TMS320F28035:我设置 SPI SPICCR = 0x07、字符长度为8位、但当我发送8位时、仍然有16个时钟。

Guru**** 2347060 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/593389/ccs-tms320f28035-i-set-spi-spiccr-0x07-character-length-is-8-bit-but-when-i-send-8-bit-there-is-still-16-clocks

器件型号:TMS320F28035

工具/软件:Code Composer Studio

当我设置 SPICCR = 0x0F 时、SPI 可以正常工作、并且我可以通过两 个 SPI 读取周期从传感器获取正确的数据、但在我的应用中、我只需要24位数据、为了节省读取时间、我必须 分别发送三个8位数据。

因此、我设置 SPI SPICCR = 0x07、字符长度= 8、但当我发送8位数据时、有16个时钟。

如何发送具有8个时钟的8位数据?

谢谢。

这是 SPI 初始化函数:
空 IC_MU_SPI_Init (空)

  SPI_Fifo_init();
  SpiaRegs.SPICCR.all =0x0007;//复位打开、上升沿、8位字符位
  SpiaRegs.SPICTL.ALL =0x0006;//启用主控模式、正常相位、
  //启用 TALK、禁用 SPI int。
  SpiaRegs.SPICTL.bit.TALK = 1;
  SpiaRegs.SPIBRR = 0x0002;
  SpiaRegs.SPICCR.all =0x008F;//从复位中撤回 SPI
  SpiaRegs.SPICCR.bit.CLKPOLARITY = 1;
  SpiaRegs.SPIPRI.bit.FREE = 1;//设置断点以避免干扰 xmission


//SPI FIFO 初始化
void SPI_Fifo_init()

   //初始化 SPI FIFO 寄存器
  SpiaRegs.SPIFFTX.All=0xE040;
  SpiaRegs.SPIFFRX.All=0x2044;
  SpiaRegs.SPIFFCT.All=0x0;

这是测试读取函数:

void IC_MU_ReadAngle_8位(void)

  unsigned char temp;
  GpioDataRegs.GPACLEAR.bit.GPIO19=1;
  SPI_xmit_8bit (((UINT16)(0xA6<8));

  while (SpiaRegs.SPIFFRX.bit.RXFFST!=1){}
  temp = SpiaRegs.SPIRXBUF;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您好像在 IC_MU_SPI_Init()函数中多次写入 SPICCR。 第二次使用0xF 再次覆盖 SPICHAR 字段。 将0x008F 更改为0x0087、看看是否修复了它。

    惠特尼