找回密码
 立即注册
查看: 346|回复: 3

STC8H4K64TLCD使用UART4_2的DMA方式不正常!(已上传波形照片)(已解决!)

[复制链接]

该用户从未签到

12

主题

36

回帖

198

积分

注册会员

积分
198
发表于 2023-8-13 00:46:23 | 显示全部楼层 |阅读模式
本帖最后由 zcllom 于 2023-8-13 13:15 编辑

STC8H4K64TLCD使用UART4_2的DMA极其不正常,搞了大半天,这么简单的功能居然不正常,气死人。用的是TIM4做波特率,设置按照STC工具上弄的,用普通UART方式没问题,发送正常,但是改位DMA方式,发送不正常,波形也不对!!不知道怎么回事
回复 送花

使用道具 举报

该用户从未签到

12

主题

36

回帖

198

积分

注册会员

积分
198
 楼主| 发表于 2023-8-13 11:02:50 | 显示全部楼层
我把正确的波形和错误的波形都放上来!!!!!


首先是UART方式正确的:

正确.jpg


再就是DMA方式错误的

错误.jpg

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:01
  • 签到天数: 139 天

    [LV.7]常住居民III

    26

    主题

    1332

    回帖

    4145

    积分

    论坛元老

    积分
    4145
    发表于 2023-8-13 12:13:09 | 显示全部楼层
    用STC8H实验箱例程包里面“57-DMA-UART串口与存储器数据自动收发”目录下的串口4使用DMA中断模式与电脑收发测试例程试试看。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    12

    主题

    36

    回帖

    198

    积分

    注册会员

    积分
    198
     楼主| 发表于 2023-8-13 13:31:15 | 显示全部楼层
    已经越来越多地使用STC芯片了,以前做的一块板子,用的是STC8H8K64U,使用DMA+UART1方式,非常好用。这次做的板子用DMA+UART4出现这种状况,始料不及。那为什么不直接用单独UART方式?因为不能,单片机要控制一长条的级联的幻彩LED,对LED灯组发数据时,一丁点中断都不能产生,甚至用数组循环寻址方式都不行,必须用指针移位来取LED的颜色灰度数据往单总线上发bit数据(21颗幻彩LED,每一颗有红、绿、蓝三个字节寄存器,也就是一次性按照严格的时序发完21x3x8=504bit位数据)。所以DMA功能处理串口收发是刚需!
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    问题解决了,现在总结一下。
    DMA好用好用真好用!就是经常在相关设置上会有些小的细节变更,或者说同系列不同型号是否存在一定的设置差异?不得而知!
    就比如这次:

    前段时间用STC8H8K64U芯片,
    设置串口发送DMA:
    DMA_UR4T_TXA = (u8)pData;
    会出错!
    改成以下:
    DMA_UR4T_TXA = (u16)pData;                        //只有强制转换(u16),才能避免异常 20230403
    好了

    这次用的是STC8H4K64TLCD(带触摸键,带LCD驱动很香),沿用之前的设置,结果就坏了
    改成:
    DMA_UR4T_TXAH = (u8)((u16)pData >> 8);
    DMA_UR4T_TXAL = (u8)((u16)pData);
    就解决问题了。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-14 08:32 , Processed in 0.061288 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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