找回密码
 立即注册
楼主: 飞***

DMA的串口通信疑问

[复制链接]
  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-18 10:34:10 | 显示全部楼层
    cofmilk 发表于 2023-12-18 08:54
    你要看那个不定长接收的例程,,然后怎么设置DMA接收字节数 你要看手册里的介绍 ...

    S2TB8 S2RB8  以前是用普通的串口通信,现在改为DMA模式,发现新增的问题,就是9位数据传输过程 ,如何发送第9位数据 ,需要奇 偶校验这些?

    点评

    哟,,是个好问题...这个还真的没想过  发表于 2023-12-18 10:37
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-18 11:36:31 | 显示全部楼层
    发现DMA串口通信,超时中断的例程只有STC8H有,而STC32G没有?
    然后STC8H例程里面传输总字节寄存器    DMA_UR2T_AMT(8位) 而STC32G 是分高低字节 DMA_UR2T_AMTL 和DMA_UR2T_AMTH   加起来是16位,是不是STC32G最大可支持65536个字节传输?
    STC8H  头文件是  DMA_UR2T_TXA(代表16位)然后  DMA_UR2T_TXAL和DMA_UR2T_TXAH也分别定义了,可供用户自已选择。但是STC32G只有定义 DMA_UR2T_TXAL和DMA_UR2T_TXAH,没有定义DMA_UR2T_TXA(代表16位)  ?为什么会不一样?有讲究吗?
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:55
  • 签到天数: 131 天

    [LV.7]常住居民III

    26

    主题

    1297

    回帖

    4043

    积分

    论坛元老

    积分
    4043
    发表于 2023-12-18 16:21:15 | 显示全部楼层
    飞捷 发表于 2023-12-18 11:36
    发现DMA串口通信,超时中断的例程只有STC8H有,而STC32G没有?
    然后STC8H例程里面传输总字节寄存器    DMA_ ...

    STC32G12K128与STC8H没有硬件串口超时功能,例程都是通过软件实现超时判断。
    STC32G8K系列与STC32F系列有硬件串口超时功能,可以通过硬件超时功能接收不定长数据。
    另外STC32系列有串口硬件奇偶校验功能,可以设置9位模式使能硬件自动生成奇偶校验位。
    STC8H可以使用16位方式读写寄存器,STC32系列不行,所以STC32系列头文件没有定义16位寄存器。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-18 17:53:47 | 显示全部楼层
    乘风飞扬 发表于 2023-12-18 16:21
    STC32G12K128与STC8H没有硬件串口超时功能,例程都是通过软件实现超时判断。
    STC32G8K系列与STC32F系列有 ...

    STC32G8K系列与STC32F系列有硬件串口超时功能,可以通过硬件超时功能接收不定长数据。
    请问有没有这方面的资料,多久没收到数据才算是超时?是否可以设置超时时间?

    另外STC32系列有串口硬件奇偶校验功能,可以设置9位模式使能硬件自动生成奇偶校验位。
    那发送和接收如何确定是奇校验还是偶校验? 如我想奇校验,单位机如何知道我想用奇校验,没有寄存器可以设置的?


    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:55
  • 签到天数: 131 天

    [LV.7]常住居民III

    26

    主题

    1297

    回帖

    4043

    积分

    论坛元老

    积分
    4043
    发表于 2023-12-18 18:08:19 | 显示全部楼层
    飞捷 发表于 2023-12-18 17:53
    STC32G8K系列与STC32F系列有硬件串口超时功能,可以通过硬件超时功能接收不定长数据。
    请问有没有这方面 ...

    STC32系列规格书串口章节有介绍,以下是串口超时设置寄存器:

    截图202312181804461013.jpg

    截图202312181805304318.jpg

    以下是串口奇偶校验位设置寄存器:
    截图202312181807555613.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-18 21:58:09 | 显示全部楼层
    乘风飞扬 发表于 2023-12-18 18:08
    STC32系列规格书串口章节有介绍,以下是串口超时设置寄存器:

    我们平时用的STC8H的串口是异步通信吧?然后这个模式好像是同步通信?这个超时接收还和奇偶校验好像也是在同步模式下才有用吧?   然后我主要是与外围的设置异步通信的,所以实现不了?

    点评

    异步模式有效。  发表于 2023-12-19 09:02
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-18 21:59:22 | 显示全部楼层
    飞捷 发表于 2023-12-18 21:58
    我们平时用的STC8H的串口是异步通信吧?然后这个模式好像是同步通信?这个超时接收还和奇偶校验好像也是 ...

    我们平时用的STC8H的串口是异步通信吧?然后这个模式好像是同步通信?这个超时接收还和奇偶校验好像也是 ...
    截图202312182158181070.jpg
    截图202312182158493098.jpg
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-19 10:41:30 | 显示全部楼层
    飞捷 发表于 2023-12-18 17:53
    STC32G8K系列与STC32F系列有硬件串口超时功能,可以通过硬件超时功能接收不定长数据。
    请问有没有这方面 ...

    我在想,这个超时模式是否可以利用 DMA_UR2R_DONE 已传输的字节数,如果大于0,并传输数字不变的情况超过多少ms ,就判定超时,然后禁用接收使能。 然后当禁用接收使能后,这个DMA_UR2R_DONE会不会就直接被清零了?还是使能的后才清零?
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-19 19:26:34 | 显示全部楼层
    飞捷 发表于 2023-12-19 10:41
    我在想,这个超时模式是否可以利用 DMA_UR2R_DONE 已传输的字节数,如果大于0,并传输数字不变的情况超过 ...

    woc老哥这想法有点意思啊,,,我这里测试的时候没有你想的那么细,,,我这里测试的是 关闭DMA再打开DMA之后就清零了,,,还有一个问题,,这个寄存器在接收了256个字节的时候也是0 请注意

    点评

    能不能帮测试一下我这想法行不行得通?  发表于 2023-12-19 22:17
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 141 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    605

    积分

    高级会员

    积分
    605
     楼主| 发表于 2023-12-19 22:16:52 | 显示全部楼层
    cofmilk 发表于 2023-12-19 19:26
    woc老哥这想法有点意思啊,,,我这里测试的时候没有你想的那么细,,,我这里测试的是 关闭DMA再打开DMA之后就 ...

    我的方案大多是基于modbus rtu协议,对于串口可以通过DMA发送,这样响应提高好多,现在总是移值不成功,所以产生很多想法。
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-4 12:31 , Processed in 0.069409 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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