如何将DMA用于在Cortex M3上读取的I2C,

问题描述 投票:0回答:1

我正在使用Atmel SAM3S MCU,他们的ASF东西可以进行I2C(它们称为TWI)通信。很好,除了从我的主循环中花费太多时间。

因此,我希望能够启动DMA传输以从I2C设备读取数据。但是,所有文档都说您不能在TWI之类的半双工设备上同时打开TX和RX。该文档确实表明它在TWI寄存器中有一个外设DMA控制器(PDC)寄存器部分,但是除了USART(全双工)之外,我找不到任何PDC示例。]

我唯一想到的就是设置TX部分和next-RX部分,并希望它在TX完成后自动启用RX。

有人在SAM3S上使用DMA进行I2C读取吗?如果是这样,您能给我指出一些文档或示例吗?

我正在使用Atmel SAM3S MCU,他们的ASF东西可以进行I2C(它们称为TWI)通信。很好,除了从我的主循环中花费太多时间。所以,我希望能够引发...

i2c cortex-m3 atmel dma
1个回答
0
投票

我对特定部分不熟悉,但是我建议对于许多常见的使用模式,您最好的选择可能是仅使用DMA处理多字节数据序列。大多数I2C外设都通过执行以“写”地址字节开头的操作来读取数据,如果确认,则发送地址或有关所需数据的其他信息。随后是重新启动和“读取”地址字节。如果这一点得到确认,那么除了设置了“ ack”标志外,可以执行除字节读取之外的所有字节读取操作。完成此操作后,要求在清除“ ack”标志的情况下读取最后一个字节。

© www.soinside.com 2019 - 2024. All rights reserved.