请问高手们, F1C100S 串口 怎么 通过 DMA 收发数据 ?找不到相关资料 , 毫无头绪
离线
看数据手册 估计没适配过 自己写驱动吧
离线
参考手册,uart里面有可以fifo寄存器,将dma的外设地址指到该地址,开uart中断,中断里启动dma
离线
官方SDK里UART走DMA的例子基本没有,全靠自己啃。你先确认内核开了DMA支持(`CONFIG_DMA_SUN4I`),设备树里给UART节点加`dmas`和`dma-names`属性,指向对应的DMA通道和请求号。驱动层面主要是申请DMA slave通道、配置源/目的地址(UART数据寄存器)、设置数据宽度和burst大小,注意F1C100s的burst最大是4。收发逻辑就是:接收可以配循环DMA,满了进中断处理;发送则启动一次传输,等回调再发下一批。坑网有老哥调通过SPI DMA,思路可以借鉴,但串口的DRQ类型和FIFO trigger level得自己对着手册算。
离线