完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有两个问题:
1. GPIO最高支持的切换频率是多少? 目前测试看直接通过汇编的SETB和CLR调整GPIO脚(已配置成输出)的电平,MCU工作在56MHz,从示波器观察输出大约是14MHz,从理论上讲,SETB和CLR都是单指令周期,那么输出频率应该在56/2=28MHz. 2. UART0中断使能会影响GPIO切换频率 相同的代码,一旦打开UART0的中断使能(ES = 1),GPIO的切换速率就会降低到330KHz左右。 void main() { CfgFsys(); // Init system clk mDelaymS(5); // Wait the clk to be steady CH559UART0Alter(); // Switch UART0 pin to 37/38 mInitSTDIO(); // Init UART0 for stdio //ES = 1; // Enalbe UART0 interrupt,一旦打开UART0中断就会导致GPIO切换速度极度降低 IE_UART1 = 1; EA = 1; // Enalbe interrupt for all CH559GPIOModeSelt(1, 6, 6); // 配置pin1输出 while(1) pwm_pin1(255); // pwm_pin1中通过CLR/SETB切换管脚pin1电平 } 以上均是使用CH559EVT中的示例中的函数。目前验证看,UART0中断使能会影响所有端口的切换速度,而不只是UART0映射到的端口0;UART1中断使能没有此问题。 麻烦尽快确认,是否为软件配置问题,谢谢。 |
|
相关推荐
6个回答
|
|
SETB 和 CLR 是 2 字节指令,因此是 2 个周期。您对 14MHz 匹配的观察。
使用 CPL,您可能会达到 28MHz。 您没有为 Uart0 显示任何中断处理程序。我猜 irq 一次又一次地触发,可能是因为 TI 没有被清除。因此,在 irq 之间只执行一条指令。 |
|
|
|
嗨,usbman,
非常感谢你。 我检查了名为 CH55X 指令,PDF 的指令数据表,你说得对,SETB 位和 CLR 位都需要两个周期,所以第一个问题被清除了。 再一次,你是对的,TI 标志也需要被清除。原谅我的粗心大意,提出这样一个小问题来打扰人们。 BTW,你好像不是中国的,但是你对WCH系列的MCU那么熟悉。我的帽子给你。 |
|
|
|
这两个是双周期指令。
|
|
|
|
SETB c 和 CLR c指令是单周期的,但是比特是双周期的
|
|
|
|
你说得对,虽然我在中国生活了一段时间,但我来自德国。
这里也有一些 WCH 芯片。不幸的是,这些天即使在 LCSC,更有趣的芯片也缺货了。例如 CH549 或 CH555。 |
|
|
|
ummm,SETB和CLR指令的英文位的PDF就是双周期的,就像你说的,汇编里写了。
对于@usbman,德国朋友,向 WCH 询问一些 CH549 或少于 5 个芯片的 CH555 可能是更好的选择,特别是如果你想用这些设计一些有趣的东西。 |
|
|
|
只有小组成员才能发言,加入小组>>
477 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2874 浏览 2 评论
2361 浏览 1 评论
820浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
649浏览 1评论
501浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
366浏览 1评论
643浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 07:57 , Processed in 1.056084 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号