请问如何实现单片机从串口接收图像数据,并在LCD屏幕上显示

2019-07-14 14:36发布

想实现的功能是指纹传感器将采集到的指纹原始图像通过串口发送给单片机,单片机将收到到的图像在LCD屏幕上显示出来。现在的情况是指纹模块能够返回采集到的指纹图像,大约40KB,但是我不知道怎么才能把串口收到的数据保存下来。原来的一个想法是每接收到一个字节,就将该字节存放在外部flash(w25x16)中,多次尝试后无果。

void USART1_IRQHandler(void)
{         
        if(__HAL_USART_GET_IT(&huart1, USART_IT_RXNE) != RESET)
        {         
                if(USART1_RX_COUNT == USART1_MAX_RECV_LEN)  //缓冲区满
                        USART1_RX_COUNT=0;
                USART1_RX_BUF[USART1_RX_COUNT] = huart1.Instance->RDR; //串口收到一个字节
                sFLASH_WriteBuffer(&USART1_RX_BUF[USART1_RX_COUNT],Adr,1);//写入flash
                USART1_RX_COUNT++;
                Adr++;  
        }
}   

写入flash这个函数在主函数中调用正常,能够写入数据,也能够正确读出,放在中断服务函数里就不行,,debug模式全速运行就卡在中断里面了,,请各位给点思路。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
dingyang598
1楼-- · 2019-07-14 22:52
 精彩回答 2  元偷偷看……
vywyefswer
2楼-- · 2019-07-15 03:02
写外部flash肯定不能放在中断中执行的,很费时,而且你从串口接收数据并写入到flash中肯定要增加应答机制,有些类似于STM32的uart iap例程,你可以参考下
vyewrewr
3楼-- · 2019-07-15 04:45
MCU选用RAM大一些的,最少64K,最好96K的,比如STM32F103RF之类的,有了充足的RAM后接收完所有数据后一次性按页写入Flash,一个字节一个字节的写效率太低。
滔滔不绝的滔滔
4楼-- · 2019-07-15 06:43
个人建议不要操作保存到flash。据我了解,串口的速度一般比LCD接口的慢,所以建议你每收到一个数据或几个数据就往LCD里发送显示。或者收到一段数据一起发送(比如100字节?)
60user135
5楼-- · 2019-07-15 10:13
STM32的uart iap例程
ligeht
6楼-- · 2019-07-15 12:03
 精彩回答 2  元偷偷看……

一周热门 更多>