打印

救助:想要实现功能,串口输入写到24c02再从24c02读出写到w25q128,最后从w25q128读出到串口并输出,过程中数据会丢失,附图和..

[复制链接]
511|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "spi.h"
#include "w25qxx.h"
#include "24cxx.h"

int main(void)
{
        u8 t;
        u8 m;
        u8 len ;        
        u8 TEXT_Buffer[USART_REC_LEN];
        u8 datatemp1[USART_REC_LEN];

        u8 datatemp2[USART_REC_LEN];
        u32 FLASH_SIZE;        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//
        delay_init(168);    //
        uart_init(115200);        //
        
        LED_Init();                                        //
        AT24CXX_Init();                        //
        W25QXX_Init();                //
         
               
         while(AT24CXX_Check())//
        {
                LED0=!LED0;//
        }
        while(W25QXX_ReadID()!=W25Q128)                        //
        {
                LED1=!LED1;                //
        }        
        while(1)
        {
                        if(USART_RX_STA&0x8000)
                        {
                                len=USART_RX_STA&0x3fff;//
                        printf("\r\n您发送的消息网为:\r\n");
                                for(m=0;m<len;m++)
                                        {
                                        TEXT_Buffer[m] = USART_RX_BUF[m] ; //将串口数据写到TEXT_Buffe(个人认为是这一步有问题)
                                        }
                                        AT24CXX_Write(0,(u8*)TEXT_Buffer,len);//
                                        AT24CXX_Read(0,datatemp1,len);//
                                        FLASH_SIZE=16*1024*1024;                                                                                                                //
                                        W25QXX_Write((u8*)datatemp1,FLASH_SIZE-100,len);          //
                                        W25QXX_Read(datatemp2,FLASH_SIZE-100,len);                                        //
                                for(t=0;t<len;t++)
                                        {
                                                USART_SendData(USART1,datatemp2[t]);                                 //
                                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//
                                        }        
                        printf("\r\n\r\n");//
                        USART_RX_STA=0;
                        }
                }
        }        

发送文字会出现乱码 发送数字会丢失首位。直接用串口通信没问题,工程中加入IIc和SPI通信就会出错  个人认为是数据类型不匹配 但是不会改 求帮忙。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

377

主题

377

帖子

0

粉丝