单片机端USB接口数据上传程序说明
扫描二维码
随时随地手机看文章
将c8051f320单片机内的flash程序区内的数据块:通过usb接口上传到pc端。通过pc端的应用接收软件,将数据块存成hex数据文件。并存放到pc的硬盘中。一次最大的数据块存储量;是4kb.具体的例程演示和操做,可查看320usb单片机开发板使用说明。
1)运行上位机软件、上下位机USB接口连接好,USB初始化后。上位机软件得到下位机的状态回应(设备已准备好),此时,上位机软件对话框(SELECT)中显示1 2 3 4,表示上下位机USB接口初始化完成,握手成功。
此时,单片机端的程序为:调用USB-API函数:USB_cLOCk_start();USB时钟初始化,内部时钟12MHz,USBq全速时钟48MHz;portl_init();i/O接口初始化;调用USB-API函数:USB_init();USB接口使能;调用USB-API函数:USB_int_enable();USB中断使能。
2)在上位机软件进行数据块上传操作时,点击左下角对话框(RECEIVE FILE),上位机发出将单片机内数据上传的命令,通过USB口将命令设置信息下载到单片机的buffer中。此时,单片机端程序运行状态为:进入中断16的中断服务程序。
USB_api_test_isr();指示中断原因,设置当时状态。之后,进入state_machine()函数,由于USB上下位机设备都已打开,程序进入接收主机设置信息函数RECEIVE_SETUP(),并用block_read;USB-api函数,读PC发送的命令设置,---(buffer 3),并判断buffer(0)是否=read_msg.如成立,则进入单片机数据发送到PC的准备程序。
这段程序的功能是:a)将变量(数据块)numblock,确认;发送的数据块起始地址。数据块在在单片机flash的2000h~21fth中;b)确定变量(数据块)的最大个发送字节。c)调用block_write,USB_api函数,把上述设置信息发送到主机,即Byteswrote=block_write(byte★)&buffer;同时,将此时的状态设置为:m_state_=st_tx_file;并点亮LED2=1,发光管。
3)程序再次进入state_machine()函数,此时状态设置为到tx._file单片机数据发送至PC模块,程序完成下面动作,a)设要写的数据长度和数据块的起始地址。b)调用USB_api功能函数block_write进行数据发送。C)检查数据是否发送完毕?发送时,led2在闪动;发送完毕,led2熄灭。