主题中讨论的其他器件: LM8272
大家好、我正在测试使用 ADS1261完成的设计、其中模拟电源未放置在+5V/0V 或+/-2.5V、而是放置在+4.5V/-0.5V。 从数据表中可以看出、这似乎在要求范围内、但我在获得正确的读数时遇到了问题、因此我想放心地确定、这不是我的问题的根源、芯片在这样的电源电平下按预期工作。
此致、
François μ A
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.
大家好、我正在测试使用 ADS1261完成的设计、其中模拟电源未放置在+5V/0V 或+/-2.5V、而是放置在+4.5V/-0.5V。 从数据表中可以看出、这似乎在要求范围内、但我在获得正确的读数时遇到了问题、因此我想放心地确定、这不是我的问题的根源、芯片在这样的电源电平下按预期工作。
此致、
François μ A
您好 Bryan、
很高兴听到这不是问题。 这是相关原理图的图片。 运算放大器已被 LM8272取代、以便能够驱动容性负载。 我目前无法提供逻辑分析仪图片、但由于我现在已经完全执行了 CRC 校验、我发送的数据、 我读取的数据是正确的(通过支持材料中提供的 CRC 函数没有为我计算正确的 CRC 代码的方式)。 配置完成后、我还读取所有寄存器以使它们与程序同步、因此这是对值写入正确的再次检查。
我对寄存器发挥了相当大的作用。 目前、我可以使用内部基准(+/-2.5V)非常接近预期值、但没有校准、但是当我使用 AVDD/AVSS (+4.5V/-0.5V)时、虽然该值随电压变化、但返回的读数不正确(例如2.55V 而不是1.1V)。 我将转换中使用的参考值从计数更改为伏特。
我似乎也有校准过程方面的问题。 据我了解、偏移校准通过发送 SFOCAL 命令自动进行。 但是、当我使用 AVDD/AVSS 作为参考时、ofcal 寄存器会包含0xFFFFFFE3、该值异常高。
对于 FSCAL、我首先将 MUXP 和 MUXN 设置为分别连接到 AVDD 和 AVSS 的输入(在我的情况下为 AIN7和 AIN8)。 然后、我等待100ms 以使输入稳定、 然后运行 GANCAL 命令。 例如、我在 FSCAL 寄存器中得到0x3fefe9的值、这比 OFCAL 更有意义、但当然、如果偏移不正确、这也无关紧要。
感谢您的帮助和致以诚挚的问候、
François μ A
尊敬的 Francois:
您能否向我发送您在使用内部 VREF 和电源时看到的原始 ADC 输出代码(以十六进制表示)? 对每个器件进行20次左右的测量、然后发送结果、注意所使用的特定增益、滤波器设置、数据速率和电源电压。 转换过程可能存在问题。
对于偏移校准、请注意、由于偏移可以是正的或负的、因此 OFCAL 寄存器中的值采用二进制补码形式。 因此、您看到的值实际上是一个非常小的负数(假设 VREF = 2.5V 且增益= 1、则大约为-8.6uV)
布莱恩
寄存器配置如下:
数据速率:20sps
延迟:1.16ms
过滤器:FIR
旁路:启用(PGA 增益为1,但带旁路)
斩波:正常
| AVDD/AVSS;未校准;AIN5 = 3.5V | AVDD/AVSS;校准;AIN5 = 3.5V | 内部 Vref;无校准;AIN5=1.5V | 内部 Vref;校准;AIN5=1.5V | |
| 1 | 0x005a4426 | 0x007ffb76 | 0x004d5da2 | 0x003dd6ba |
| 2. | 0x005a4298 | 0x007ff9ca | 0x004d5ef3 | 0x003dd7fd |
| 3. | 0x005a42db | 0x007ffae4. | 0x004d5f7c | 0x003dd477 |
| 4. | 0x005a42d2 | 0x007ff9ca | 0x004d6066 | 0x003dd82c |
| 5. | 0x005a4417 | 0xFFF4cc | 0x004d5f84 | 0x003dd743 |
| 6. | 0x005a453d | 0xFFF3ff | 0x004d5f78 | 0x003dd654 |
| 7. | 0x005a43ea | 0xFFF159 | 0x004d5d43 | 0x003dd583 |
| 8. | 0x005a427c | 0xFFF444 | 0x004d5db0 | 0x003dd84e |
| 9. | 0x005a4364 | 0xFFF31c | 0x004d5fc5 | 0x003dd7a2 |
| 10. | 0x005a4416 | 0xFFF3ce | 0x004d5eaa | 0x003dd71d |
| 11. | 0x005a43dc | 0xFFF01b | 0x004d5cf1 | 0x003dd359 |
| 12. | 0x005a436b | 0xFFF030 | 0x004d5da4 | 0x003dd7c2 |
| 13. | 0x005a4255 | 0xFFEFF6d | 0x004d5e45 | 0x003dd2c8 |
| 14. | 0x005a43ba | 0xFFEDFF | 0x004d5ed3 | 0x003dd4f8 |
| 15. | 0x005a43a3 | 一个很好的酒店 | 0x004d60d1 | 0x003dd698 |
| 16. | 0x005a43fb | 图示13. | 0x004d5ec4 | 0x003dd717 |
| 17. | 0x005a43da | 0xFFe0df | 0x004d6386 | 0x003dd6d9 |
| 18 | 0x005a42aa | 0xFFe2aa | 0x004d5fc0 | 0x003dd322 |
| 19. | 0x005a42df | 0xffffff004 | 0x004d5b62 | 0x003dd295 |
| 20. | 0x005a4245 | 0xFFE13e | 0x004d5ce3 | 0x003dd4a2 |
| 校准 | 默认值 | 0x00ffe3. | 默认值 | 0x00ff5c |
| fsck | 默认值 | 0x003fefe7 | 默认值 |
0x003332fe |
我还附上了我在前一条消息中忘记的原理图。
最后、我用于从十六进制代码转换为伏特值的代码、第一个函数获取 tmp 中的代码、PADS 在左侧、使其成为32位二进制补码、 然后将其转换为32位整数 (tmp 是 uint32_t、int_val 是 int32_t 的指针)
if (tmp & 0x800000) tmp |= 0xc000000;
*((uint32_t*) int_val)= tmp;
然后、父函数执行换算转换。
* val = (vrefp - vrefn)*(int_val -(-0x800000))/((0x800000 - 1)-(-0x800000))+ vrefn;
此致、François
尊敬的 Francois:
这些值对我来说一般都是正确的。
例如、第一列中的第一个值(0x005A4426)使用5V 基准电压(AVDD - AVSS = 5V)转换为3.52V。 第三列中的第一个值(0x004d5da2)转换为1.51V
内部 VREF 情况(0x003332fe)中的默认 FSCAL 值看起来非常低、因此校正系数为~0.8。 我想在这个过程中、为输入提供了错误的满量程值。 您可以在校准后的结果(第一项、第四列)中看到这一点、其中0x003dd6ba 对应于使用2.5V VREF 的1.21V、或1.5V 的~80%。 好消息是、ADC 获取了不正确的 FSCAL 值并将其正确应用于输出结果、因此、一旦正确配置满量程电压、其他一切都应该正常。
您还可以查看我们用于 ADS1261的基于 Excel 的计算器工具。 这就是我用来执行针对这个器件的代码转换的内容: https://www.ti.com/lit/zip/sbac200
布莱恩