主题中讨论的其他器件:ADS131M02、 ADS131M03、 SysConfig
您好!
前面的 Zip 文件 具有一个 MSP430驱动程序库...如何 在 Am243x Launchpad 中移植该文件?
我曾尝试移植该文件、但在该代码上无法进行 SPI 通信。
上述文件可移植到 AM243x Launchpad。 我需要你的帮助。
谢谢
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.
您好!
前面的 Zip 文件 具有一个 MSP430驱动程序库...如何 在 Am243x Launchpad 中移植该文件?
我曾尝试移植该文件、但在该代码上无法进行 SPI 通信。
上述文件可移植到 AM243x Launchpad。 我需要你的帮助。
谢谢
尊敬的 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:
很抱歉响应延迟...
上图是在逻辑分析仪波形中捕获的。
谢谢。
阿比纳亚
尊敬的 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 数据的指导?
谢谢。
阿比纳亚
尊敬的 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 返回相同的值?
谢谢。
阿比纳亚