硬汉嵌入式论坛

 找回密码
 立即注册
查看: 995|回复: 2
收起左侧

[有问必答] 如何同时读取两个ADC芯片的数据,64kSPS

[复制链接]

22

主题

40

回帖

106

积分

初级会员

积分
106
发表于 2024-5-13 14:49:29 | 显示全部楼层 |阅读模式
本帖最后由 eoorosy 于 2024-5-13 14:52 编辑

各位大佬,请教想要读取两个ADC芯片的数据,一个ADC单独使用一个SPI端口,ADC设置64KSPS,SPI为8M,ADC数据为24bit,想要根据DRDY信号读取数据。
目前使用下列最简单的收发方式,

uint8_t spi_read_write_byte(enum adcId id, uint8_t data)

{
    while(RESET == spi_i2s_flag_get(ADC_SPI_PERIPH[id],  SPI_FLAG_TBE) );
    spi_i2s_data_transmit(ADC_SPI_PERIPH[id], data);

    while(RESET == spi_i2s_flag_get(ADC_SPI_PERIPH[id],  SPI_FLAG_RBNE) );
    return spi_i2s_data_receive(ADC_SPI_PERIPH[id]);
}这种方式会导致读取另一个ADC时进中断慢,使用什么方式比较好,SPI中断?DMA?有没有例程呀


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-5-14 09:14:19 | 显示全部楼层
这种的使用DMA是最好的。只是我们没有做SPI DMA ADC的例子,只有SPI DMA DAC,SPI DMA Flash的例子参考。
回复

使用道具 举报

22

主题

40

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2024-5-14 10:41:42 | 显示全部楼层
eric2013 发表于 2024-5-14 09:14
这种的使用DMA是最好的。只是我们没有做SPI DMA ADC的例子,只有SPI DMA DAC,SPI DMA Flash的例子参考。

硬汉哥,另外DRDY信号目前是用外部触发,是不是可以使用TIMER的输入捕获直接触发DMA传输,这样减少进入中断的次数?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 13:56 , Processed in 0.038842 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表