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/TMS570LS1224:TMS570LS12x MCP4922 SPI 通信

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/892839/ccs-tms570ls1224-tms570ls12x-mcp4922-spi-communication

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

这是器件 SPI 寄存器;

这是 halcogen 部分;

最后一个是代码  

#include "sys_common.h"
#include "sys_core.h"
#include "spi.h"

/*用户代码开始(1)*/
//*用户代码结束*/

//@fn void main (void)
*@简要应用程序主函数
*@注意默认情况下,此函数为空。
*
*此函数在启动后调用。
*用户可以使用此函数来实现应用程序。
*/

/*用户代码开始(2)*/
uint16 TX_Data[]={0xF7D0};
uint16 RX_Data[]={};
//用户代码结束*/

int main (void)
{
//用户代码开始(3)*/
spiDAT1_t 数据通信 fig1_t;

dataconfig1_t.CS_hold = false;
dataconfig1_t.WDEL = true;
dataconfig1_t.DFSEL = SPI_FMT_0;
dataconfig1_t.CSNR = 0xFE;




spiSendInit();

spiSendData (spiREG1、&dataconfig1_t、16、&TX_Data);

SendspiAndGetData (spiREG1、&dataconfig1_t、16、&TX_Data、&RX_Data);
while (1)
{

};
/*用户代码结束*/

返回0;
} 

因此、DAC 器件中不会发生任何情况。 有人可以帮助我吗?

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

    Suat、您好!

    从第一个 SPI 时序图中可以看到、SDI 是 MSB 优先的。 但会在您的 SPI 配置中检查"Shift LSB First"。 另请仔细检查 SPI 器件(DAC)数据表上的时钟相位和极性要求。

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

    王您好;

    感谢您的建议、我仔细检查了时钟相位和极性、电路在模式11和00下工作、所以我尝试了00和11、但仍然找不到问题  

    在数据图器件中、有 DFSEL 和 CSNR、我找不到关于它们的任何解释、您能帮我吗?

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

    您好!

    您是否试用过 SDI 的 MSB?  MSB 意味着最高有效位被首先发出。  这意味着16位字的 bit15 - bit14 - bit14……bit1、bit0。

    LSB 反转传输顺序: 位0 -位1 -位2 ...位14、16位字的位15。

    DFSEL: 数据字格式选择.. 在一个 SPI 网络中、不同类型的从器件支持四种独立的数据字格式。 数据字格式通过 SPIFMTx 寄存器进行配置。

    CSNR: 芯片选择(CS)号、定义在数据传输期间将被激活的芯片选择引脚。 如果使用 SPICS[0]、则应将0xFE 写入 CSNR 域。 每个芯片选择(未激活)的默认值可通过寄存器 csdef 进行配置。

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

    您好!

    是的、我发现我在错误的方向感应它们、它必须是 MSB。 我是在上传此帖子后进行的。 因此我尝试了您说的所有内容、但不起作用、因此我编写了一个代码、它的作用类似于 SPI、但我对 GPIO 进行了管理并正常工作。  

    总之、我无法很好地启动 TMS 的 SPI 模块、但我编写了一个在 GPIO 上工作的 SPI 代码。

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

    我注意到您错误地调用了 SPI API。  

       spiSendData(spiREG1, &dataconfig1_t, 16, &TX_Data);
       spiSendAndGetData(spiREG1, &dataconfig1_t, 16, &TX_Data, &RX_Data);
    16是块大小。 但声明中的数组大小 TX_Data()和 RX_Data()为1。