stm32通过串口负责接收大于20K字节量,波特率2400,中间不间断并在接收过程中将数据进行24c512存储,由于数据传输间隙小于存储需要时间,原本计划使用两个数组,每个数组128字节,第一个接收完成后第二个接收,第一个用于存储,以此循环,但是实验时发现无论发送多少数据,每次只能写入存储芯片256字节,应该接收到的也只有256字节,对此情况请大侠指导这种做法是否有可行性?是程序原因导致接收没处理好还是这种接收处理过程确实不能解决问题?
中断处理代码:
[mw_shl_code=c,true]if(i_num2%256<128)
table[i_num2%128] = USART2->DR;
else
table_1[i_num2%128] = USART2->DR;
if(i_num2 % 256 == 128)
{
write_flag = 1;
}
if(i_num2 % 256 == 0 && i_num2 != 0)
{
write_flag = 2;
}
i_num2++;[/mw_shl_code]
主函数中存储代码:
[mw_shl_code=c,true] if(write_flag == 1)
{
Write_Lenbyte(page_addr,&table[0],128);
page_512++;
write_flag = 0;
}
if(write_flag == 2)
{
Write_Lenbyte(page_addr,&table_1[0],128);
page_512++;
write_flag = 0;
}[/mw_shl_code]
如果确实不能解决,打算使用DMA接收,然后进行存储,这种方式是否能够满足需求?
|