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.

[参考译文] MCU-PLUS-SDK AM243X:基于 ARM 的微控制器论坛

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1325004/mcu-plus-sdk-am243x-arm-based-microcontrollers-forum

器件型号:MCU-PLUS-SDK
主题中讨论的其他器件:ADS131M02ADS131M03SysConfig

您好!

前面的 Zip 文件 具有一个 MSP430驱动程序库...如何 在 Am243x Launchpad 中移植该文件?  

我曾尝试移植该文件、但在该代码上无法进行 SPI 通信。

上述文件可移植到 AM243x Launchpad。 我需要你的帮助。

谢谢  

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

    尊敬的 Abi Bharathi:

    1.您发布的两个链接似乎都不起作用。 您可以重新检查吗?

    2.您能否解释一下为何要将 MSP430驱动程序库移植到 am243x?

    3.您想要实现的确切功能是什么?

    您能否回答以上问题、让我们能够更好地帮助您?

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    我们在项目中使用了 AM243X Launchpad 控制器、并希望将其移植。 我需要读取 LOAD CELL (1022)的 ADC 值、然后对其进行校准。 因此、在 SPI 接口的该 ADC 值中。

    https://www.ti.com/product/ADS131M02#design-development

    以上链接有一个驱动程序库...


    谢谢

    阿比纳亚

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

    尊敬的 Abinaya:

    AM243x McSPI 驱动程序 API 和用法与 MSP430不同。 请参阅 AM243x MCU+ SDK 示例:mcspi_loopback_am243x-lp_r5fss0-0_nortos_ti-arm-clang。 McSPI 实例初始化/打开代码是由 syscfg 自动基于 example.syscfg 生成的。

    最新的 AM243x MCU+ SDK 可从以下位置下载: SDK-AM243X 软件开发套件(MCU-PLUS-SDK)| TI.com

    此致、

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

    尊敬的 Ming:

    很抱歉响应延迟...

    • 我能够使用 TI 的 SDK、mcu_plus_sdk_am243x_09_00_00_30示例(mcspi_loopback)在 AM243x LP 板和 Arduino 之间通过 SPI 发送/接收数据。
    • "MCSPI_TRANSMIT ()"、用于在  同时  (同步)  这在我们的用例中是不可用的。 我们需要 主器件作为 am243x LP、 从器件是具有 ads131m03 24位 ADC 的 ADC15点击模块本身。 在使用该 MCSPI_TRANSMIT 函数时、我可以发送 txbuf 0x00、并且 rxbuf 中接收 SPI 数据为0。
    • 我已经尝试其他 SPI 驱动程序(MCSPI_writeTxDataReg ()和 MCSPI_readRxDataReg ())来分别写入和读取 SPI 数据、但它会在随机 数据112中接收到。
    • 除了 MCSPI_TRANSMIT ()、MCSPI_writeTxDataReg ()和 MCSPI_readRxDataReg () API 函数调用之外、是否有任何其他 API 可以用于读取和写入 SPI 数据?

    上图是在逻辑分析仪波形中捕获的。

    谢谢。

    阿比纳亚

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

    尊敬的 Abinaya:

    如果您将 AM243x LP 用作 SPI 主器件、则 SPI 时钟应该已由 AM243x LP 提供。  MCSPI_TRANSMIT ()是需要调用的正确函数 、用于从 TX 缓冲区设置为零(或任何内容)的 ADC15点击模块接收数据。  TX 和 RX 都将使用 MCSPI_TRANSMIT ()生成的 SPI 时钟。 从屏幕截图中、我没有看到 SPI 时钟(通道3)。 如果没有 SPI 时钟、SPI 从器件不会发送任何数据。 这就是您没有从 SPI 从器件接收到任何数据的原因。

    您是否可以向我发送您的 SPI 配置(example.syscfg)和 MCSPI_TRANSMIT ()的参数设置?

    此致、

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

    尊敬的 Ming:

    谢谢你的答复。  

    下图显示了 SPI 设置(example.sysconfig)。

     

     以下 函数 包括      MCSPI_TRANSMIT()的参数设置。

    uint8_t spiSendReceiveByte (const uint8_t dataTx){

    drivers_open();
    Board_driversOpen();


    uint32_t baseAddr、chNum;
    uint8_t dataRx;
    baseAddr = CONFIG_MCSPI0;
    chNum = gConfigMcspi0ChCfg[0]。chNum;
    MCSPI_Transaction spiTransaction;                         

    MCSPI_Transaction_init (&spiTransaction);
    spiTransaction.channel = gConfigMcspi0ChCfg[0]。chNum;
    spiTransaction。dataSize = 16;
    spiTransaction.csDisable = true;
    spiTransaction.count =(spiTransaction.dataSize/8);
    spiTransaction.txBuf = 0x00;
    spiTransaction.rxBuf = dataRx;
    spiTransaction.args = NULL;

    uint32_t transferOK = MCSPI_transfer (gMcspiHandle[CONFIG_MCSPI0]、&spiTransaction);

    DebugP_log ("发送数据%d\r\n"、dataTx);
    DebugP_log ("接收数据%d\r\n"、dataRx);


    Board_driversClose ();
    drivers_close();

    返回 NULL;

    您能否提供一些关于如何通过 SPI 通信读取 ADC 数据的指导?

    谢谢。

    阿比纳亚

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

    尊敬的 Abinaya:

    正如我在上一篇文章中提到的、您需要设置"spiTransaction.txBuf = dataTx;"才能使 SPI 时钟正常工作。

    此致、

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

    尊敬的 Ming:

    非常感谢。 实际上、我执行了您在响应中指示的所有操作、当然、SPI 当前正常工作、但是 dataRx 不会读取 ADC 数据。

    下面的函数用于读取 ADC 数据。

    bool ReadData (ADC_CHANNEL_DATA * DataStructuret)
    {
    INT I;
    uint8_t bytesPerWord = getWordByteLength ();
    uint8_t dataRx[4]={0};

    /*将 nCS 引脚设置为低电平*/

    setCS (低电平);

    dataRx[i]= spiSendReceiveByte (0x15);

    DataStruct->Response = combinBytes(dataRx[0],dataRx[1]);

    dataRx[i]= spiSendReceiveByte (0x00);

    DataStruct->channel1 = signExtend (&dataRx[0]);

    dataRx[i]= spiSendReceiveByte (0x00);

    DataStruct->channel2 = signExtend (&dataRx[0]);


    setCS (高电平);

    //发生 CRC 错误时返回 true
    返回 NULL;

    如果有任何指令或示例程序、可以指示如何利用函数读取 ADC 数据。

    谢谢。

    阿比纳亚

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

    尊敬的 Abinaya:

    如果 AM243x 的 McSPI RX/TX 正常工作、则应重点关注 AM243x LP 和 ADS131M02之间的硬件连接。 请参阅   ADS131M02双通道同步采样24位 Δ-Σ ADC 数据表(修订版 A)的9.1.6代码示例和9.1.3最小接口连接(TI.com)。

    此致、

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

    尊敬的 Ming:

    非常感谢您的答复。

    正如您提到过的、我将检查代码和接口连接、以便根据 ads131m02引用的示例代码来编写该代码。

    我在 AM243x LP 中使用了1022 loadcell 接口与使用的 ADC15 click 模块  

    am243x LP 向 ADC 模块发送一个寄存器地址、该模块使用16位数据进行响应。  

    以下函数 使用 SPI 通信发送和接收数据。

    我发送的写入寄存器16位值是从 ADC 模块接收到的0x6000值是53dc (十六进制)。如果我不知道数据是否正确。

    是否可以发送 单个寄存器值并从 ADC 返回相同的值?

    谢谢。

    阿比纳亚

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

    尊敬的 Abinaya:

    我不是  ads131m02的专家、就个人而言、我以前从未使用过这款器件。 我认为、寻求帮助的最佳场所是 e2e ADC 论坛。

    此致、

    明