CN / EN
CN / EN

提问

获得支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

关于IO电平反转 GR551x

已解决

che****com

2022-06-27 22:40

您好,

最近在调试WS2812E,由于GR551X的PWM不能实现对其的驱动,所以用延时的方式实现。所以请问一个NOP()大概是多长时间?还有就是如图,如果中间没有NOP,那么一个GPIO从SET到RESET之间的时间是多少?能达到WS2812E所需要的时间吗?



0收藏

0赞成

{-}{-}

汇顶员工
2022-06-28 09:30

您好,可以参考这个问题 “使用主频64m。执行一个nop需要多长时间”,具体时序可以配合逻辑分析或者示波器,实际量测。



4条评论

0赞成

0收藏

您的评论
最佳答案

Darren

2022-06-28 20:46

1.NOP为单周期指令,执行时间为一个系统时钟,如果系统时钟为64MHz,则NOP执行时间为1/64M

2.如果需要快速翻转IO可以在初始化完成后调用ll层函数如:ll_gpio_set_output_pin\ll_gpio_reset_output_pin,ll_gpio_toggle_pin,AON_GPIO\MSIO同理,此外函数放在SRAM执行可以进一步提高速率,在函数名前加SECTION_RAM_CODE即可。

3.根据所提供的时序图,所需IO最大翻转速率约为2MHz,可以使用GR551X系列实现(GR551X IO翻转最快约为4MHz)。

如下为GPIO PIN2输出指定个数脉冲波形参考代码,您可以实测一下:

SECTION_RAM_CODE void output_n_pulse(uint32_t pulse_num)
{
while(pulse_num--)
{
ll_gpio_set_output_pin(GPIO0, LL_GPIO_PIN_2);
__nop();
ll_gpio_reset_output_pin(GPIO0, LL_GPIO_PIN_2);
__nop();
}
}

0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注