大家好、
最近、我有一个项目要 使用 Linux 主机与 ADS1299进行通信。 我在论坛中搜索发现 TI 不支持 n 个 ADS1299 Linux 器件驱动程序。 因此、我使用我的知识为 ADC 编写一个。
此驱动程序的目标是读取 ADC 数据并将其传输到用户空间。 我的想法是、当 Linux 主机从 ADC 获取 DRDY 信号时、会触发中断、驱动程序的 SPI 读取 API 将从 SPI 总线读取数据。 数据将填充到缓冲 区中、当缓冲区已满时、驱动程序会向 userspace 程序发送信号、并且缓冲区中的数据将由 userspace 读取。
虽然这不 是实现我的目标的完美计划、但我完成了上述代码。 但是、我面临一个 使 我的目标失败的问题。
Linux 主机的 SPI 传输 API 应置于中断的下半部分(由于 SPI API 的睡眠机制)、 也就是说、如果 AD 的采样率太快、中断的下半部分可能会读取 ADC 的延迟数据、当我使用4ksps 时、会有7997个中断、但只读取了7907个数据。 当我使用250sps 时 、我的想法是可以的。 但是、我应该至少使用4ksps。
我不知道您是否有过这一问题的经历、或者您的客户是否有类似的问题、或者我的框架可能不适合高速 ADC、 或者、如果您有其他一些 ADC (SPI 传输)、其中包含 Linux 设备驱动程序作为参考、 我希望您能为我提供帮助、非常感谢。