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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT MCAL
  4. MCAL I2C Slave 模式 一直进I2C_SLAVE_EVENT_RX_FULL问题

MCAL I2C Slave 模式 一直进I2C_SLAVE_EVENT_RX_FULL问题

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

    企业微信截图_17254282554427.png 企业微信截图_17254283381203.png

    1 条回复 最后回复
    0
    • telinjiaT 离线
      telinjiaT 离线
      telinjia
      写于 最后由 编辑
      #2

      调试I2C slave模式时 一段时间后会进I2C_SLAVE_EVENT_RX_FULL,这样会导致后面数据读不到, 但我在读之前清空过RxBUFF了

      1 条回复 最后回复
      0
      • FrankF 离线
        FrankF 离线
        Frank YunTu
        写于 最后由 编辑
        #3

        这个问题和清不清RxBuff没关系,你需要将I2C slave的中断优先级提高,避免I2C slave的中断被抢占。因为I2C slave的数据接收和发送的buffer是在中断callback中填进去的。

        lrx9695L 1 条回复 最后回复
        0
        • telinjiaT 离线
          telinjiaT 离线
          telinjia
          写于 最后由 编辑
          #4

          还是会报rxbuff full问题,这是我slave相关配置,使用dma通道,另外YT配置优先级数字是低,优先级高,还是数字高,优先级高

          1 条回复 最后回复
          0
          • xianghanX 离线
            xianghanX 离线
            xianghan YunTu
            写于 最后由 编辑
            #5

            数字越低,优先级越高

            1 条回复 最后回复
            0
            • telinjiaT 离线
              telinjiaT 离线
              telinjia
              写于 最后由 编辑
              #6

              image.png

              image.png

              image.png

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

                把I2C slave通道的中断优先级数字改小

                1 条回复 最后回复
                0
                • telinjiaT 离线
                  telinjiaT 离线
                  telinjia
                  写于 最后由 编辑
                  #8

                  优先级数字改小后,还是会进RXbuff full

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

                    排查下I2C slave 中断是否有被抢占?

                    1 条回复 最后回复
                    0
                    • telinjiaT 离线
                      telinjiaT 离线
                      telinjia
                      写于 最后由 编辑
                      #10

                      没有发现有抢占的情况,
                      image.png
                      这是我作为slavecallback 的 接受到的枚举类型,从接受的开始,我就打印事件类型,有4,3,2事件类型,对应STOP、RX TX,奇怪的是没有0出现,也就是rxfull,但我的打印会出现。
                      image.png

                      1 条回复 最后回复
                      0
                      • FrankF 离线
                        FrankF 离线
                        Frank YunTu
                        写于 最后由 编辑
                        #11

                        发送端数据超出接收配置的数据长度了吗? RxFull事件发生后也可以更新buff通过这个API
                        CddI2c_PrepareSlaveBuffer

                        1 条回复 最后回复
                        0
                        • telinjiaT 离线
                          telinjiaT 离线
                          telinjia
                          写于 最后由 编辑
                          #12

                          长度没有超出 ,我现在的操作是,在I2C_SLAVE_EVENT_TX_REQ事件中调用CddI2c_PrepareSlaveBuffer,准备buff,在I2C_SLAVE_EVENT_STOP事件中,读取RXBUFF,处理数据,(I2C_SLAVE_EVENT_TX_REQ事件也同样调用CddI2c_PrepareSlaveBuffer传送数据,但BUFF不同)

                          1 条回复 最后回复
                          0
                          • telinjiaT 离线
                            telinjiaT 离线
                            telinjia
                            写于 最后由 编辑
                            #13

                            RXfull 问题解决了,现在slave模式下会出现长数据收不到的情况

                            image.png

                            image.png

                            lrx9695L 1 条回复 最后回复
                            0
                            • FrankF 离线
                              FrankF 离线
                              Frank YunTu
                              写于 最后由 编辑
                              #14

                              不要在中断里面加打印。如果你接收的长度没有超出I2C_EVENT_RX_REQ_SLAVE事件回调的设定值,是不会触发I2C_SLAVE_EVENT_RX_FULL事件的。请再次检查用例

                              1 条回复 最后回复
                              0
                              • lrx9695L 离线
                                lrx9695L 离线
                                李太白
                                在 回复了 telinjia 最后由 编辑
                                #15

                                telinjia 兄弟,你是怎么解决的? 我SDK,I2c从机加了中断优先级之后,也是会一直进204aa0ba-3f42-4313-b79b-c495a746a98a-5e9b523d9f02702839967f199674d96.png

                                36db2d90-a8a9-4e4c-8433-54de53eacc06-image.png

                                莫愁前路无知己

                                1 条回复 最后回复
                                0
                                • lrx9695L 离线
                                  lrx9695L 离线
                                  李太白
                                  在 回复了 Frank 最后由 编辑
                                  #16

                                  Frank 大哥,我也遇到了SDK I2C Slave 模式 一直进I2C_SLAVE_EVENT_RX_FULL的情况。刚发布了帖子🙀

                                  莫愁前路无知己

                                  1 条回复 最后回复
                                  0
                                  • FrankF 离线
                                    FrankF 离线
                                    Frank YunTu
                                    写于 最后由 编辑
                                    #17

                                    lrx9695 你用了DMA吗?

                                    lrx9695L 1 条回复 最后回复
                                    0
                                    • lrx9695L 离线
                                      lrx9695L 离线
                                      李太白
                                      在 回复了 Frank 最后由 编辑
                                      #18

                                      Frank 我没用DMA,就想着用中断

                                      莫愁前路无知己

                                      1 条回复 最后回复
                                      0
                                      • FrankF 离线
                                        FrankF 离线
                                        Frank YunTu
                                        写于 最后由 编辑
                                        #19

                                        image.png 这个回调里面填写的接收数据的长度和master实际发送的长度是一致的吗?如果slave接收数据的长度<master实际发送的数据长度,才会触发I2C_SLAVE_EVENT_RX_FULL事件

                                        lrx9695L 1 条回复 最后回复
                                        0
                                        • lrx9695L 离线
                                          lrx9695L 离线
                                          李太白
                                          在 回复了 Frank 最后由 编辑
                                          #20

                                          Frank 这里是设置了511字节,主机发送数据最大是255字节。
                                          e4d3fc90-00f2-4b23-800e-790103422dd4-750f9656d175ccafc97c36a7f51ce8a.png
                                          当我把INT_SYS_InstallHandler注释了就不会出现这种问题了

                                          莫愁前路无知己

                                          1 条回复 最后回复
                                          0

                                        • 云途论坛规则/Yuntu Forum Rules

                                          发帖前请查看

                                        • YCT离线License申请流程

                                          帮助没办法联网的电脑使用YCT

                                        • YT CONFIG TOOL调查问卷

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

                                        • demo
                                          12
                                          can
                                          8
                                          lin stack
                                          6
                                          yt-link
                                          5
                                          vscode
                                          3
                                          adc模块
                                          2
                                          i2c
                                          2
                                          uuid
                                          2
                                          Online Users
                                          • 登录

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