主题中讨论的其他器件:TCA6424A、
大家好、
在我们的设计中、我们使用 TMS570LS3137 MCU 的内部 I2C 和 MibADC1模块。 根据设计、它们完全独立、这意味着器件信号不会在这两个模块之间交叉连接。 I2C 模块配置为与 400kHz 器 件(经 SCLK 验证)一起工作、即 TI I/O 扩展器 P/N TCA6424A、而 MibADC1模块配置为采集12个模拟通道、每个通道的采样时间为2us。
在启用 MibADC1之前、24位 I2C I/O 扩展器配置有2个输入端口和1个输出端口。 读回的配置寄存器值确认配置正确、预定义的输入端口状态也正确读回。 现在、由于 I2C 不运行、MibADC1被启动并且每50ms 正确地批量获取所有通道值。
MibADC1采集机制没有软件干预、配置如下:
- RTI 比较事件2以启动 MibADC1硬件采样序列(每50ms 一次)
- 完成采样(12x2us=24us)后、会触发预编程的 DMA、并将通道数据传输到软件 RAM
- 当 DMA 传输完成时、会调用软件 IRQ 以将通道二进制数据转换为模拟数据
但是、从指令 I2C 模块读取或写入的那一刻起(也是每50ms 一次)、所有 MibADC1通道的读数现在都包含完全相同但错误的24位二进制值、 这个值不会改变,即使只有一个位也不会改变,直到 I2C 总线出现问题(总线忙= 1并且不能释放主控模式= 1…… 我们还不知道原因)、通常在一到两秒内、MibADC1以正确的通道电压重新启动正常运行(I2C 总线从此时将不起作用)。
有人可以告诉我在哪里可以看到吗?
谢谢。