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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1L系列
  4. (SDK)i2c Master使用不带Blocking的函数,无法读取功能。

(SDK)i2c Master使用不带Blocking的函数,无法读取功能。

已定时 已固定 已锁定 已移动 已解决 YTM32B1L系列
10 帖子 3 发布者 2.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • lrx9695L 离线
    lrx9695L 离线
    李太白
    写于 最后由 编辑
    #1

    1)如图,I2c时钟12M,波特400K,模式Fast。 使用带Blocking的函数可以正常读取数据,如下图。
    530ee278-5301-4059-9ac1-06cc2c96a7c9-image.png
    波形正常:
    c65c0b24-2fc6-4205-af48-ccf7647def2e-image.png

    2)使用不带Blocking的函数,
    99a74150-1024-4de5-8f1f-bc435dae280b-image.png
    只有写的波形,正确,但是clock被拉低了:
    c2a7f609-cc1f-4ab0-8b59-a5f86b2fd333-image.png
    没有读的波形,并且进入断点之后,再点运行,SDA线被拉低了,Clock恢复高
    e7c1ee5e-66e9-4838-a920-e5c90394f386-image.png
    ecc27134-ca2b-42ee-b198-e758f770dfd2-image.png

    综上所述:请问为啥不可以直接使用不带Blocking的函数?带Blocking的函数会影响Freertos的工作么?

    莫愁前路无知己

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

      FreeRTOS 推荐使用有Block的API,里面会创建信号量(开始传输后会让出CPU)

      lrx9695L 1 条回复 最后回复
      0
      • lrx9695L 离线
        lrx9695L 离线
        李太白
        写于 最后由 编辑
        #2

        已经找到问题,是写完之后I2c没有处于idle状态

        莫愁前路无知己

        gaoShengG 1 条回复 最后回复
        1
        • FrankieF 离线
          FrankieF 离线
          Frankie YunTu
          写于 最后由 编辑
          #3

          FreeRTOS 推荐使用有Block的API,里面会创建信号量(开始传输后会让出CPU)

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

            Frankie 收到~

            莫愁前路无知己

            1 条回复 最后回复
            0
            • gaoShengG 离线
              gaoShengG 离线
              gaoSheng
              在 回复了 李太白 最后由 编辑
              #5

              lrx9695 老哥,我遇到类似的问题了,方便把你的情况给我描述一下不😵

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

                gaoSheng 我是小学生,就是你使用I2c Master就使用函数接口I2C_DRV_MasterSendDataBlocking,还有I2C_DRV_MasterReceiveDataBlocking。 可以把最后Timeout形参设置为1,避免阻塞任务

                莫愁前路无知己

                gaoShengG 1 条回复 最后回复
                0
                • gaoShengG 离线
                  gaoShengG 离线
                  gaoSheng
                  在 回复了 李太白 最后由 编辑
                  #7

                  lrx9695 不好意思,之前我没有描述情况,这边是使用I2C_DRV_MasterSendDataBlocking没有问题。使用I2C_DRV_MasterSendData偶尔会出现问题。因为客户实测发现带blocking的耗时会多一点,所以想用不带Blocking的

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

                    gaoSheng 带blocking的不会阻塞太久呀,你设置1ms的超时,也不久呀。因为master写完数据之后需要在中断里设置i2c_idle状态,然后才能实现读取数据的操作。 太快了不行。所以需要给他点时间设置I2c空闲状态。

                    莫愁前路无知己

                    gaoShengG 1 条回复 最后回复
                    0
                    • gaoShengG 离线
                      gaoShengG 离线
                      gaoSheng
                      在 回复了 李太白 最后由 编辑
                      #9

                      lrx9695 非常感谢,我让客户试试😳

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

                        gaoSheng 这么着急么?1ms都等不了。安全气囊么?实际我示波器测试过了,用不了1ms,对任务没影响,。任务Task周期一直稳定,未出现超时等不规则时序

                        莫愁前路无知己

                        1 条回复 最后回复
                        0
                        • ,FrankieF Frankie 将这个主题转为问答主题
                        • ,FrankieF Frankie 将这个主题标记为已解决

                      • 云途开发生态介绍

                        快速上手云途开发生态

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YT CONFIG TOOL调查问卷

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

                      • can
                        25
                        demo
                        22
                        lin stack
                        13
                        uds
                        13
                        md14
                        6
                        yt-link
                        6
                        fbl
                        5
                        adc模块
                        4
                        Online Users
                        OliverChenO
                        OliverChen
                        • 登录

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