Ai8051U单片机USB免停电一键下载方法实践心得 Ai8051U单片机上实践USB免停电下载功能时,现将整个学习过程中的关键要点和实践经验整理成文,希望能为后来者提供参考。 我使用的是擎天柱开发板,发现传统51单片机常用的CH340串口芯片被省略,取而代之的是Type-C直连设计。通过学习,该芯片内置了USB 模块,支持USB2.0全速通信。 擎天柱开发板下载程序有两种模式, 一、USB(HID)模式 此模式下载,必须先按住P32按键,P32引脚接地触发下载模式,再按下POWER按键断电一下,此时ISP下载软件端口显示(HID1)USB_Writer,再按下载(编程)就可以下载程序。 二、USB-CDC/串口模式 此模式下载,只要ISP下载软件按下载(编程)就可以直接下载程序,不用停电。 免停电下载功能关键事项:
1. 必须先从《USB不停电下载》DEMO中移植相关的代码,
首先要把stc32_stc8_usb.h、stc_usb_cdc_32.LIB这两个文件拷到程序的目录里,在同main.c调用头文件tc32_stc8_usb.h,并把库文件stc_usb_cdc_32.LIB加入源代码,并定义如下三个字符串变量:
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //与ISP下载软件里自定义命令一致,@STCISP#是默认的自定义命令,可以修改,必须一致。
其次在main主函数里加入:
P_SW2 |= 0x80; //B7位写1,使能访问XFR
usb_init(); //USB CDC 接口配置
IE2 |= 0x80; //使能USB中断
EA = 1; //IE |= 0X80;
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
再次在While循环里加入:
if (bUsbOutReady)
{
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
其他功能程序不变。
2.首次烧录:上述代码需通过传统方式(如冷启动)首次下载至单片机,
3.此后可通过USB免停电更新。通过USB免停电下载:选择USB-CDC/串口模式。
4.三个下载选项必须打勾:☑使用默认自定义命令@STCISP#,☑下次使用HID接口进行ISP下载,☑每次下载前先发送自定义命令
通过上述代码与配置,Ai8051U可实现一键免停电下载,显著提升调试效率。 Ai8051U自带USB模块,可大大简化硬件设计。这一点比STM32都强!
|