沁恒risc-v蓝牙mcu开发预防针

目录

本篇博客主要收集CH57x、CH58x、CH59x的官方资料中没有提供或比较难找到的注意点、可以或难以规避的硬件设计。

①天线设计:

在CH57x、CH58x、CH59x官方PCB资料中,天线电路中没有绘制匹配电路。在CH32V208的官方评估板中有绘制,如下图。

如果不过无线认证,天线馈线中没有匹配电路也罢,不影响使用;如果需要过认证,一定要加上匹配电路,用来降低谐波幅值。

 

②GPIO

1.PA12引脚,在上电/上电复位时会产生一个15ms左右的高电平。这是芯片原厂产测用的信号,无法规避。若MCU供电电源端有大电容,该高电平可能会在断电后一段时间内有几次“仰卧起坐”。

如果要驱MOS管或者其他电压敏感电路,建议要避开PA12脚

2.PA9引脚,在上电时会产生一个40~50ms的高电平。这是由于启用了串口免按键下载,原厂boot中配置了UART功能,TX脚空闲状态上拉了。可以在烧录前配置关闭串口免按键下载。

3.GPIO中断标志寄存器,只有16位,也就是说只有PA0~PA15、PB0~PB15是可以被用作GPIO中断的。

PB22、PB23也可以被用作GPIO中断的,这俩IO占用了PB8\PB9的标志位。使用PB22、PB23作为GPIO中断,根据MCU封装引脚数量不同,可能需要配置GPIO重映射。

在IO比较少的封装中,比如说CH592F,MCU上只有PB22\PB23而没有PB8\PB9,此时PB22\PB23两脚本身就是支持GPIO中断的,无需额外配置;

针对IO比较多的封装,比如说CH582M,是QFN48的,它引出了PB8、PB9,MCU上同时存在PB8\PB9组、PB22\PB23组,只能在两组之间二选一(如果IO中断数量不够,强烈建议不要使用PB8\PB9,要使用PB22\PB23作为GPIO中断脚)。重映射配置:R16_PIN_ALTERNATE |= RB_PIN_INTX;

4.GPIO的灌入电流和输出电流,最大值均为120mA。

 

③休眠唤醒:

CH57x、CH58x、CH59x中,GPIO唤醒只支持单词边沿唤醒,不支持双边沿唤醒。

一般的使用场景下,产品使用者短按IO用于唤醒MCU并执行逻辑,完全没有问题。

若触发sleep休眠的唤醒后,长按GPIO,IO处于无法产生唤醒电平的状态,那么MCU会判断有休眠后无法唤醒的风险,故进入idle等级的休眠,功耗在2mA左右,远比sleep休眠的数个uA要大。

上述情况可能发生在非正常使用的场景,比如说运输过程中挤压到了IO按键(如果产品是纽扣电池供电的小玩具,可以用纸片暂时断开电池的供电,但也有其他锂电池供电的场景)。

以下降沿唤醒为例,增加外部上拉电阻,可以在代码中进行mA级别功耗的规避。代码中需要做额外逻辑。

过程1.按键按下,下降沿唤醒,执行完预定的逻辑后,在sleep休眠前,读IO判断是否已经为高电平;若是,正常休眠,不由修改配置。

过程2.若过程1的sleep休眠前读IO,仍未低电平,将GPIO配置为浮空输入,唤醒方式配置为上升沿唤醒,继续休眠。此时是可以休眠成功的,但会多出一个外部上拉电阻的静态电流。图中用了100K的上拉,那么会产生30uA左右的静态电流。

过程3.按键松开,由于外部存在上拉电阻,上升沿唤醒,在sleep休眠前,读IO判断是否已经是低电平;若是,将GPIO配置还原为上拉输入,唤醒方式配置还原为下降沿唤醒,回到过程1开始前的状态。

 

④SPI:

CH5Xx系列MCU,在SPI模块主机部分中只做了在时钟信号上升沿采样,无法做下降沿采样,故只能用SPI的模式0和模式3。如果需要SPI驱动的设备对模式1/模式2有硬性要求,可以考虑使用CH32V208,所有模式都支持,也带BLE。

 

posted @ 2024-06-25 16:09  JayWell  阅读(32)  评论(0编辑  收藏  举报