金牌会员
 
- 积分
- 1103
- 金钱
- 1103
- 注册时间
- 2016-7-19
- 在线时间
- 168 小时
|
3金钱
如题哈,我想通过探索者STM32F4的串口将存在W25Q6的数据(大概3M,包括字库、图片、语音)传送到上位机,上位机将接受到的数据保存为.bin文件,然后将这个文件发送给其他的探索者单片机,这个单片机将接受的数据也保存在W25Q6。最终数据是发送过去了,但是里面的字库,图片,语音数据都用不了。
但是我如果直接将这两个单片机进行通信传输数据,就没得问题。字库,图片,语音都可以用。串口的设置和用上位机操作时的设置一样。
现在就是想,我前面用上位机的操作为什么就不行呢?还请大神们指点一下。
这是串口发送的程序。里面 fillnum=my_data_buffill(datadev.usartbuf1,DATA_USART_TX_DMA_BUFSIZE,0,num);的意思是
将W25Q6从地址0~num的数据读出来发在datadev.usartbuf1数组里。每次读DATA_USART_TX_DMA_BUFSIZE个数据。返回值是读取的个数
datadev.usartbuf1=mymalloc(SRAMIN,DATA_USART_TX_DMA_BUFSIZE);
datadev.tbuf=mymalloc(SRAMIN,DATA_USART_TX_DMA_BUFSIZE);
while(1)
{
fillnum=my_data_buffill(datadev.usartbuf1,DATA_USART_TX_DMA_BUFSIZE,0,num);//将为W25Q6的数据读出来,
for(t=0;t<fillnum;t++)
{
USART_SendData(USART1, datadev.usartbuf1[t]); //向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
if(fillnum!=DATA_USART_TX_DMA_BUFSIZE)//传输结束
{
LCD_ShowString(30,40,200,16,16,"OK");
break;
}
}
LCD_ShowNum(50,80,my_addr_play,7,24);
myfree(SRAMIN,datadev.tbuf); //释放内存
myfree(SRAMIN,datadev.usartbuf1);//释放内存
my_addr_play=0;
|
|