跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT MCAL
  4. MC0 Mcal的UART问题

MC0 Mcal的UART问题

已定时 已固定 已锁定 已移动 YT MCAL
11 帖子 2 发布者 124 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • RuiXuR 离线
    RuiXuR 离线
    RuiXu YunTu
    编写于 最后由 编辑
    #2

    回读校验是什么方式实现的?是TX\RX短接还是有上位机回传。如果按照上述需求,目前只能在上层做处理,调用异步发送/接收单字节发送在接收完成中断去校验,每次校验成功后再发送下一字节

    1 条回复 最后回复
    0
    • zhaiZ 离线
      zhaiZ 离线
      zhai
      编写于 最后由 zhai 编辑
      #3

      就是在发送完成中断去校验。如果按照单字节的发送/接收的话,目前看下来发送1字节会进入四次中断,依次是TX_EMPTY->END_TX->END_TX->RX_FULL->END_RX,在END_RX中做已发送数据的校验,校验通过再发送下一字节数据。这样中断的耗时会不会很长?以及中断太频繁?

      使用单字节发送、单字节接收,这样中断是TX_EMPTY->END_TX->END_TX->RX_FULL->END_RX
      使用单字节发送、IDLE中断实现不定长数据的接收,这样中断就是TX_EMPTY->END_TX->END_TX->IDLE

      1 条回复 最后回复
      0
      • RuiXuR 离线
        RuiXuR 离线
        RuiXu YunTu
        编写于 最后由 编辑
        #4

        使用的是MCAL哪个版本呢?如果实在觉得四次中断进入比较频繁,可以修改底层代码,不使用发送完成回调函数

        zhaiZ 1 条回复 最后回复
        0
        • zhaiZ 离线
          zhaiZ 离线
          zhai
          回复了RuiXu 最后由 编辑
          #5

          RuiXu 2.3.0

          1 条回复 最后回复
          0
          • RuiXuR 离线
            RuiXuR 离线
            RuiXu YunTu
            编写于 最后由 编辑
            #6

            image.png 修改后在调用初始化函数CddUart_Init后调用一次CddUart_StartSetCallBackFun即可达到不使用发送完成回调函数的效果。

            1 条回复 最后回复
            0
            • RuiXuR 离线
              RuiXuR 离线
              RuiXu YunTu
              编写于 最后由 编辑
              #7

              其实无论有没有配置回调函数,单次接收发送单字节都会进入同样的中断次数。只是是否调用回调函数的区别:发送为空中断->发送完成中断 ->接收完成中断,如果要减少中断次数,就在TX_EMPTY调用CddUart_Buffer,连续发送,在RX_FULL进行校验,调用CddUart_Buffer连续接收。这样就在硬件层面上少进入一次发送完成中断。

              zhaiZ 1 条回复 最后回复
              0
              • zhaiZ 离线
                zhaiZ 离线
                zhai
                回复了RuiXu 最后由 zhai 编辑
                #8

                RuiXu 刚刚试了一下,按照这种方式操作,也是发送完成后才能进行回读,比如要发送2字节,中断进入顺序是TX_EMPTY->TX_EMPTY->END_TX->RX_FULL->END_RX。还是不能实现最初的一个字节发送错误就立即终止后续发送需求

                RuiXuR 1 条回复 最后回复
                0
                • RuiXuR 离线
                  RuiXuR 离线
                  RuiXu YunTu
                  编写于 最后由 编辑
                  #9

                  是改了回调函数还是使用的CddUart_Buffer的形式

                  zhaiZ 1 条回复 最后回复
                  0
                  • zhaiZ 离线
                    zhaiZ 离线
                    zhai
                    回复了RuiXu 最后由 编辑
                    #10

                    RuiXu 使用CddUart_Buffer的形式;改回调函数还是会进中断的,只是不进回调函数了

                    1 条回复 最后回复
                    0
                    • RuiXuR 离线
                      RuiXuR 离线
                      RuiXu YunTu
                      回复了zhai 最后由 RuiXu 编辑
                      #11

                      zhai 在 MC0 Mcal的UART问题 中说:

                      RuiXu 刚刚试了一下,按照这种方式操作,也是发送完成后才能进行回读,比如要发送2字节,中断进入顺序是TX_EMPTY->TX_EMPTY->END_TX->RX_FULL->END_RX。还是不能实现最初的一个字节发送错误就立即终止后续发送需求

                      连续两次进入TX_EMPTY是由于TX_EMPTY的中断响应时间太快了,可能响应第二次中断的时候第一个字节还没有接收完成。校验有一定的滞后性,但是比发送多个字节后响应IDLE校验要好一些。由于MC0没有硬件回读的功能,因此目前只有这种方法。或者可尝试修改底层代码,只使用TX完成中断作为发送中断,这样理论上也可以,但是要修改底层逻辑

                      1 条回复 最后回复
                      0

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      22
                      demo
                      20
                      uds
                      13
                      lin stack
                      11
                      md14
                      6
                      fbl
                      5
                      yt-link
                      5
                      adc模块
                      4
                      Online Users
                      abcbillA
                      abcbill
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门