上次突发奇想,自己想做一个字库,就是把字模文件写入到FLASH里面;当时没有上位机,如果自己一个一个拆分发送很麻烦,所以自己找了很多资料,最后实现了字库。
这个方法没有协议,所以有一定的概率出错。但是临时用一用是足够了。如果需要高稳定性,建议自己做上位机。
准备材料:带FLASH的板子
usb转232的数据线
正点原子XCOM串口助手
串口波特率115200,最好不要太低;
设置延时100(最高),这个时间是让单片机把接受的数据写入到Flash。
首先找一个例程或着工程,最好是带SPI-FLASH驱动和串口驱动。
保证传输前已经格式化FLASH或者已经擦除需要的空间。
程序最好不要有其他中断或者其他任务,保证传输文件的准确性。
定义文件写入地址,后期取字模的时候需要用到。
开启空闲中断,因为我是在空闲中断里面处理数据。
uint32_t WriteAddr = 0 ; //文件在flash中写入地址,根据自己的需要定义
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接收中断
USART_ITConfig(USART2, USART_IT_IDLE, ENABLE);//开启串口空闲中断
void USART1_IRQHandler(void)
{ //串口1中断服务程序
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{ //字符接收中断
USART1_RX_BUF[length++] = USART1->DR & 0x0FF;
}
else if(USART_GetITStatus(USART1, USART_IT_IDLE ) != RESET)
{//空闲帧中断 每次发送完一帧数据就会进这里
//处理接受的数据
//在这里写自己的SPI写入函数
//以我自己的为例
//W25Q128_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite) ;
W25Q128_Write(USART1_RX_BUF, WriteAddr ,length) ; //将串口接受的数据写FLASH
WriteAddr +=length; //写入地址累加
}
}
如果哪里有不懂得,可以留言或者评论,我会第一时间回复解答!文章来源:https://www.toymoban.com/news/detail-686419.html
如果觉得还不错的话留个赞吧,感谢!文章来源地址https://www.toymoban.com/news/detail-686419.html
到了这里,关于STM32通过串口接受文件写入Flash的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!