本帖最后由 imdx 于 2022-3-7 15:13 编辑
XBOOT是自用的bootloader名称,默认通过USART1来提供用户命令行,完成固件升级等任务。对于带USB的MCU,除了使用物理串口,还可以使用USB虚拟串口。之前已经在AT32F415上完整实现了XBOOT的代码,拿到AT-START-F425以后,只需要移植代码即可。
F415和F425的USB都叫做OTGFS,整体上实现非常像,都支持主机和设备,然而还是有细微的差别。主要是F425的可用端点数量从F415的4个增加到了8个。
另外一个重要的更新是F425支持VBUSIGNORE功能,这个功能是在AT32F415的C版本芯片中才实现的。具体到代码实现中,注意要定义如下的宏:
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] ignore vbus detection, only available in at32f415xx revision C.
* at32f415xx revision B: (not support)
* the vbus detection pin (pa9) can not be used for other functionality.
* vbus pin must kept at VBUS or VDD.
*
* at32f415xx revision C: (support)
* ignore vbus detection, the internal vbus is always valid.
* the vbus pin (pa9) can be used for other functionality.
*/
#define USB_VBUS_IGNORE
F415和F425另外一个重要的差异就是GPIO,F425和F421是一样的,代码中要增加pin-mux的设置。
#if defined(AT32F425C8T7)
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE9, GPIO_MUX_1);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE10, GPIO_MUX_1);
#endif
其它部分差异不是很大,包括USB库的代码都是相同的,AT32F415和AT32F425完全可以使用同一套代码,使用预编译指令对细微的差别进行分别操作。
更新hex文件成功,帖一下实验结果。
以下为更新固件视频,注意视频中使用的是物理串口,实际操作和USB虚拟串口完全相同。
https://www.bilibili.com/video/BV1yJ41177A1/ |