Atmel SAM3S MCU를 사용하고 있으며 ASF 항목은 I2C (TWI라고 함) 통신을 수행 할 수 있습니다. 주 루프에서 너무 많은 시간을 들여야하는 것을 제외하고는 괜찮습니다.Cortex M3에서 I2C 읽기를 위해 DMA를 사용하는 방법
그래서 I2C 장치에서 데이터를 읽으려면 DMA 전송을 시작할 수 있어야합니다. 그러나 모든 문서는 TWI와 같은 반이중 장치에서 TX와 RX를 동시에 켤 수 없다고 말합니다. 워드 프로세서는 TWI 레지스터에 PDC (Peripheral DMA Controller) 레지스터 섹션이 있음을 보여 주지만 전이중 인 USART를 제외하고는 PDC 예제를 찾을 수 없습니다.
내가 시도 할 수있는 유일한 일은 TX 섹션과 다음 RX 섹션을 설정하고 TX가 완료된 후 RX를 자동으로 활성화 할 수 있기를 바랍니다.
SAM3S에서 I2C 읽기를 위해 DMA를 사용하는 사람이 있습니까? 그렇다면 몇 가지 문서 나 예제를 가르쳐 주시겠습니까?
Google for AT91 DMA TWI를 사용하면 sam3x M3 (atmel)에 대해 PDC를 수행하는 Linux 드라이버를 찾을 수 있습니다. 그것은 아직도 꽤 독서이지만 운전자는 잘 구조화되어 보였고 사람들은 그것이 안정적이라고 말했다. atmel의 sam3 시리즈에 대한 설명서 및 사용 가능한 코드는 현재로서는별로 좋지 않습니다. ASF는 종종 데모 방식 이상으로 잘못된 방향을 이끌고 있습니다. Btw에서 드라이버는 9 바이트 이상의 데이터에 대해 #define을 사용하여 PDC를 사용합니다. 그래서 그들은 9 + 바이트 sequencial 읽기에 도움이 될 것으로 기대합니다. – John