Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    R128 IO 翻转测试

    A Series
    4
    6
    2398
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • YuzukiTsuru
      柚木 鉉 LV 9 last edited by

        hal_gpio_set_pull(GPIOA(18), GPIO_PULL_UP);
        hal_gpio_set_direction(GPIOA(18), GPIO_DIRECTION_OUTPUT);
        hal_gpio_pinmux_set_function(GPIOA(18), GPIO_MUXSEL_OUT);
        while (1) {
          hal_gpio_set_data(GPIOA(18), GPIO_DATA_LOW);
          hal_gpio_set_data(GPIOA(18), GPIO_DATA_HIGH);
        }
      

      粗略测试一下 R128 的 IO 翻转性能,1.61MHz,另外考虑 RTOS 存在调度

      29165e54-e9a7-4191-bf4c-4966dd722f85-fc70ba1d2c4e170a370d52b79b05dff.png

      1 Reply Last reply Reply Quote Share 0
      • YuzukiTsuru
        柚木 鉉 LV 9 last edited by

        配置纯裸机,RTOS 调度关闭
        1898827e-4d0c-4fc5-a5b0-9b3480c7eefb-图片.png

        1 Reply Last reply Reply Quote Share 0
        • YuzukiTsuru
          柚木 鉉 LV 9 last edited by WhycanService

          配置 640MHz 主频,RTOS调度关闭,1.85MHz

          c9eb5737-ca2a-41bf-8383-5c021acf6604-图片.png

          audiomonster 1 Reply Last reply Reply Quote Share 0
          • audiomonster
            audiomonster LV 3 @YuzukiTsuru last edited by

            @yuzukitsuru 可能 hal_gpio_set_data / hal_gpio_get_data 慢一点 ?

            int sunxi_gpio_output(uint32_t pin, uint32_t val) {
            
                    uint32_t dat;
                    uint32_t bank = GPIO_BANK(pin);
                    uint32_t num = GPIO_NUM(pin);
            
                    struct sunxi_gpio *pio =
                            &((struct sunxi_gpio_reg *)SUNXI_PIO_BASE)->gpio_bank[bank];
            
                    dat = readl(&pio->dat);
                    if(val)
                            dat |= 1 << num;
                    else
                            dat &= ~(1 << num);
            
                    writel(dat, &pio->dat);
            
                    return 0;
            }
            

            GPIO clock 是不是 24MHz ?

            YuzukiTsuru 1 Reply Last reply Reply Quote Share 0
            • YuzukiTsuru
              柚木 鉉 LV 9 @audiomonster last edited by

              @audiomonster 有可能,之后检查下

              D 1 Reply Last reply Reply Quote Share 0
              • D
                dream LV 6 @YuzukiTsuru last edited by

                @yuzukitsuru 直接操作寄存器,应该还会有提升。函数入栈出栈有消耗。

                1 Reply Last reply Reply Quote Share 0
                • 1 / 1
                • First post
                  Last post

                Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                行为准则 | 用户协议 | 隐私权政策