主题中讨论的其他器件:ADS1015
大家好,
我们想要使用 ADS-1015 ADC 芯片来读取模拟输入并在 Free RTOS (M4F)中生成器件驱动程序代码。
您能不能在这方面给我们提供指导吗?
我们可以在下面的路径中看到 TI 在 Linux 中具有相同的驱动程序,但我们能帮助我们定义 FreeRTOS 开发所需的内容吗?
Linux/drivers/IIO/ADC/ TI-ADS1015.c.
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.
大家好,
我们想要使用 ADS-1015 ADC 芯片来读取模拟输入并在 Free RTOS (M4F)中生成器件驱动程序代码。
您能不能在这方面给我们提供指导吗?
我们可以在下面的路径中看到 TI 在 Linux 中具有相同的驱动程序,但我们能帮助我们定义 FreeRTOS 开发所需的内容吗?
你好
您指向您的驱动程序是由 Intel 在2016年开发的社区驱动程序、它并未明确与 AM62相关联。 TI 为 TI EVM 上的组件提供通用驱动程序。
您需要的是更多的自定义支持、位于免费 RTOS 上。 这不是我们能够直接促进的。 如果您在定制电路板上实现此功能,并且 MCU+ SDK 附带的 I2C 驱动程序出现问题,我们可以尝试提供一些指导。 没有计划针对特定客户/自定义请求开发任何特定驱动程序。
此致
Mukul
尊敬的 Mukul:
我理解您上面的陈述、但由于 ADS-1015是 TI 的 ADC 芯片。
我们需要您帮助、确定需要对数据表中的寄存器执行哪些最低配置才能开始从 I2C 线路读取数据。
我们将基于 Free RTOS 和 No RTOS Based API 创建最起码的骨架驱动程序。
PFA 在我们所指的数据表中、如下所示
e2e.ti.com/.../ADS101x_2D00_Q1.pdf
谢谢。此致、
Pawamana Tanjore。
尊敬的 Mukul:
由于我们使用多个输入通道、因此我们有一些查询。 以下是我们的要求
您能否通过共享一些此逻辑的伪代码来指导我?
谢谢。此致、
Pawamana Tanjore。
Pawamana,
您能否帮助我了解您的硬件设置是否正确、以确保硬件问题不会出现。
支持 MCU 域的 I2C 驱动程序,请在这里的构建表 https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08_06_00_18/exports/docs/build_sheet/am62x-sw-buildsheet.html 中进行检查
此致
Anshu
中的 I2C 阅读示例
是的、Anshu、我已经验证了示例代码并且开始使用与参考相同的代码来实现。
e2e.ti.com/.../2100.ADS101x_2D00_Q1.pdf
我将遵循 上面随附的 ADS-101x 数据表的第9.1.7节快速入门指南。
下面是代码、我要选择 AIN3作为 ADC 芯片 ADS-1015的输入
/* found temperature sensor */ /* Set configuration register to select AIN3 in 1015 */ I2C_Transaction_init(&i2cTransaction); i2cTransaction.writeBuf = txbuffer; i2cTransaction.writeCount = 3; i2cTransaction.slaveAddress = deviceAddress; txBuffer[0] = ADS101X_CONFIG_REG; txBuffer[1] = 0xF5; /*3rd byte is to select AIN3 input */ txbuffer[2] = 0x83; /*4th byte is selected as default */ status = I2C_transfer(i2cHandle, &i2cTransaction);
您能否建议/确认此方法是否是写入 Config 寄存器的正确方法、以选择 AIN3引脚作为 ADC 芯片 ADS-1015x 的输入。?
请更正并提供一些指导、说明这是一种错误的方法。
目前我们没有板载 ADC 芯片来验证代码结果、因此您的指导可以为我们提供很多帮助。
谢谢。此致、
Pawamana Tanjore。
尊敬的 Anshu Choudhary/MukulBhatnagar:
希望我的问题很清楚、请提供您的答案。
我们有兴趣就此话题进行一次简短的电话询问相关问题。
BR
Pawamana.
尊敬的 Anshu Choudhary/MukulBhatnagar:
您可以在优先级上地址该主题吗?
BR
Pawamana.
Anshu、您好!
我能够使用示例...!
但是、我需要一些关于下面突出显示的意见的输入、来自 ADS-101x 数据表、希望 至少 在下面的问题中您可以帮助我们...!
8.6.2转换寄存器(P[1:0]= 0h)[RESET = 0000h]
该16位转换寄存器包含的上一次转换结果采用二进制补码格式。
转换寄存器在上电后清零、并在第一次转换完成前保持为0
BR
Pawamana Tanjore。
Anshu、您好!
我最近在 TI 网站上看到了一些与 i2c 编程相关的文档。
请找到 相同的屏幕截图、我已下载代码。
下面链接和屏幕截图中提到的这段代码 看起来与我尝试为 ADS1015 ADC 实现的代码类似(NoRTOS + Free RTOS)
尊敬的 Pawamana:
我很抱歉你的失望。 您可能发现了 TI 提供用于与 ADS101x 器件通信的工具。 您找到的最新"C"代码应该是适用于大多数微控制器的通用代码、它要求 您在使用软件时、需要遵循针对 I2C 外设的适当驱动程序调用。 您可能还需要查看 最新的 ADS101x-Q1数据表 、因为它可能对您有所帮助。 最近刚刚更新。 图7-10以时序图显示写入过程。 因此、与两次背靠背写入相比、您可以通过对器件进行单次写入来简化此过程、既可以设置指针、也可以写入配置。
我将尝试回答您的具体问题、因为它们与 ADS1015相关、但我可能无法回答有关 AM64x 用法的具体问题。 ADS1015可进入低功耗状态、并默认采用单次触发工作模式。 这意味着该器件要求在您每次希望进行转换时通过写入配置寄存器将位15设置为1。
因此、要在 AIN3/GND 上启动转换、您的正确配置应该设置为0xF583。 因此、您展示的代码片段似乎是正确的。
8.6.2转换寄存器(P[1:0]= 0h)[RESET = 0000h]
该16位转换寄存器包含的上一次转换结果采用二进制补码格式。
转换寄存器在上电后清零、并在第一次转换完成前保持为0[/报价]
- 为什么最后一次转换以二进制补码格式存储..?
- 我们是否需要将该二进制补码转换为正常二进制
- 如果我们确实需要符号扩展、在出现负值时我们需要做什么
- 请分享该代码段
无论使用差分输入测量还是单端输入测量(以 GND 为基准)、ADS1015的 ADC 转换结果始终为二进制补码。 这就是说、结果始终是 AINP 相对于 AINN。 由于 AINN 连接到 GND、因此您将只受器件的+FSR (满量程)限制、不受任何负向偏移的限制。 使用二进制补码的优点是符号位将始终指示结果是正还是负。 有很多方法可以实现正确的符号扩展。 变量应为有符号整数或短整数。 对于此器件系列、我通常要做的是收集 RX 缓冲区中的转换结果并放入一个短整数中。
// Assign short signed integer to variable result short int result; result = (rxBuffer[0])<< 8) | rxBuffer[1]; //Right-shift binary 2's complement result to 12 bits result = result >> 4;如果您有其他与 ADS1015相关的问题、请告诉我。
此致、
Bob B