完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是MK64FN1M0VMD12。在这个芯片上,UART0~3支持双向DMA通道,也就是说DMA_TX和DMA_RX可以同时使用。而UART4~5只能选择单向DMA,所以我实现了UART5_RX到DMA通道接收数据,并调用 UART_WriteBlocking() 发送数据。
我的程序只是做一个 UART-echo,PC->MK64 UART5-RX 然后 MK64 UART5-TX->PC。波特率为 115200,我以 1000Bps 的速度发送。过了一会儿,UART5 溢出。(即使我不要用EDMA接收,在SDK中使用ringbuffer的方式也会溢出。)。当我在UART5上将波特率设置为38400时,它可以工作大约10分钟。但是它在UART0和UART1上运行良好。我还没有由于硬件设计原因,测试了UART2~4。 UART0~3和UART4~5有什么区别,我知道UART0~1的时钟频率是120MHz,UART3~5是60MHz,但我觉得60MHz就够了,另外UART4~5不支持bidirectional DMA channels,UART4~5的性能不是很好吗?比如更小的fifo。 这是溢出后的寄存器变化。 UART5_S1 或 = 1 UART5_SFIFO RXOF = 1 -------------- 在 DMA 接收过程中,我将 UART_RxIdle 中断设置为在 rx 空闲时接收。 UART_ClearStatusFlags(base, kUART_IdleLineFlag); UART_TransferAbortReceiveEDMA(); //abort EDMA to copy data DMABuf_TO_ReadBuf(); //copy data to read buffer UART_ReceiveEDMA(); //enable EDMA for next receive 我发现像上面的代码一样,在启用EDMA之前会发生溢出。也就是说,复制数据时会出现新数据。所以像115200这样的更高波特率会导致溢出的情况似乎是有道理的。但是当rx时我该如何接收是空闲的,没有发生溢出,为什么UART0~1可以正常工作? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1903个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36333 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4391 浏览 0 评论
6039 浏览 1 评论
6757 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4206 浏览 0 评论
614浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
611浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
599浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
692浏览 2评论
788浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-16 07:21 , Processed in 1.001119 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号