基于FPGA的ESP8266无线数据传输(温湿度DTH11、光照强度BH1750、WIFI模块)连接中国移动onenet云平台,仿真+上板

文章目录

一、创建云平台产品设备


使用串口助手测试传输过程

相关信息记录

二、FPGA仿真WIFI模块通信过程

仿真分析

c 复制代码
 //各个状态tx_data
    always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        uart_tx_data <= 8'd0;
    end
    else if((state==AT) && tx_count<8'd6 ) begin
        uart_tx_data <= cmd_AT[47 - tx_count *8 -:8];
    end
    else if((state==CWMODE) && tx_count<8'd15 ) begin
        uart_tx_data <= cmd_CWMODE[119 - tx_count *8 -:8];
    end
    else if((state==RST) && tx_count<8'd10 ) begin
        uart_tx_data <= cmd_RST[79 - tx_count *8 -:8];
    end
    else if((state==CWJAP) && tx_count<8'd31 ) begin
        uart_tx_data <= cmd_CWJAP[247 - tx_count *8 -:8];
    end
    else if((state==CWDHCP) && tx_count<8'd17 ) begin
        uart_tx_data <= cmd_CWDHCP[135 - tx_count *8 -:8];
    end
    else if((state==MQTTUSERCFG) && tx_count<8'd172 ) begin
        uart_tx_data <= cmd_MQTTUSERCFG[1375 - tx_count *8 -:8];
    end
    else if((state==MQTTCONN) && tx_count<8'd45 ) begin
        uart_tx_data <= cmd_MQTTCONN[359 - tx_count *8 -:8];
    end
    else if((state==MQTTSUB) && tx_count<8'd67 ) begin
        uart_tx_data <= cmd_MQTTSUB[535 - tx_count *8 -:8];
    end
    else if((state==MQTTPUB) && tx_count<8'd123 ) begin
        uart_tx_data <= cmd_MQTTPUB[983 - tx_count *8 -:8];
    end
    else begin
        uart_tx_data <= uart_tx_data;
    end
end
c 复制代码
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        state <= IDLE;
    end
    else begin
    case(state)
        IDLE:begin
               state<=AT;
        end
        AT:begin//at test
            if(tx_count==8'd6)begin
                state <= WAK_AT;
            end
            else begin
                state <= AT;
            end
        end
        WAK_AT:begin
            if(rx_count==8'd2)begin
                state <= CWMODE;
            end
            else begin
                state <= WAK_AT;
            end
        end
        CWMODE:begin//set mode
            if(tx_count==8'd15)begin
                state <= WAK_CWMODE;
            end
            else begin
                state <= CWMODE;
            end
        end
        WAK_CWMODE:begin
            if(rx_count==8'd2)begin
                state <= RST;
            end
            else begin
                state <= WAK_CWMODE;
            end
        end
        RST:begin//at rst
            if(tx_count==8'd10)begin
                state <= WAK_RST;
            end
            else begin
                state <= RST;
            end
        end
        WAK_RST:begin
            if(rx_count==8'd2)begin
                state <= CWJAP;
            end
            else begin
                state <= WAK_RST;
            end
        end
        CWJAP:begin//at rst
            if(tx_count==8'd31)begin
                state <= WAK_CWJAP;
            end
            else begin
                state <= CWJAP;
            end
        end
        WAK_CWJAP:begin//at rst
            if(rx_count==8'd2)begin
                state <= CWDHCP;
            end
            else begin
                state <= WAK_CWJAP;
            end
        end
        CWDHCP:begin//at rst
            if(tx_count==8'd17)begin
                state <= WAK_CWDHCP;
            end
            else begin
                state <= CWDHCP;
            end
        end
        WAK_CWDHCP:begin//at rst
            if(rx_count==8'd2)begin
                state <= MQTTUSERCFG;
            end
            else begin
                state <= WAK_CWDHCP;
            end
        end
        MQTTUSERCFG:begin//at rst
            if(tx_count==8'd172)begin
                state <= WAK_MQTTUSERCFG;
            end
            else begin
                state <= MQTTUSERCFG;
            end
        end
        WAK_MQTTUSERCFG:begin//at rst
            if(rx_count==8'd2)begin
                state <= MQTTCONN;
            end
            else begin
                state <= WAK_MQTTUSERCFG;
            end
        end
        MQTTCONN:begin//at rst
            if(tx_count==8'd45)begin
                state <= WAK_MQTTCONN;
            end
            else begin
                state <= MQTTCONN;
            end
        end
        WAK_MQTTCONN:begin//at rst
            if(rx_count==8'd2)begin
                state <= MQTTSUB;
            end
            else begin
                state <= WAK_MQTTCONN;
            end
        end
        MQTTSUB:begin//at rst
            if(tx_count==8'd67)begin
                state <= WAK_MQTTSUB;
            end
            else begin
                state <= MQTTSUB;
            end
        end
        WAK_MQTTSUB:begin//at rst
            if(rx_count==8'd2)begin
                state <= MQTTPUB;
            end
            else begin
                state <= WAK_MQTTSUB;
            end
        end
        MQTTPUB:begin//at rst
            if(tx_count==8'd123)begin
                state <= WAK_MQTTPUB;
            end
            else begin
                state <= MQTTPUB;
            end
        end
        WAK_MQTTPUB:begin//at rst
            if(rx_count==8'd2)begin
                state <= IDLE;
            end
            else begin
                state <= WAK_MQTTPUB;
            end
        end
        
        
        default:state <= IDLE;
        endcase
    end
    end

接收数据判断只是简单做了一下,因为是正确回应的话所有的指令最后都是OK。所以可以一直缓存16位数据,当持续时间大于串口接受结束标志之间的间隔后进行判断,如果最后接收到的缓存16位数据是"OK",则进入下一个状态即可,仿真只是检验一下过程,没做这一块。

按照第一部分设置的AT指令进行发送,主要就是一个状态机,一个是数据缓存发送。

2.上板

买的模块还没到,等到了再加上这部分内容。


总结

持续更新...

相关推荐
我送炭你添花9 小时前
电子世界的奇妙冒险:从一个电阻开始(系列目录)
人工智能·单片机·嵌入式硬件·fpga开发
知识充实人生11 小时前
FPGA设计杂谈之九:HRIO/HPIO/HDIO
fpga开发·xilinx·hr i/o·hp i/o·hd i/o·io类型
maverick_11120 小时前
【FPGA】 在Verilog中,! 和 ~ 的区别
fpga开发
黄埔数据分析2 天前
QDMA把描述符当数据搬移, 不用desc engine
fpga开发
南檐巷上学2 天前
基于FPGA的正弦信号发生器、滤波器的设计(DAC输出点数受限条件下的完整正弦波产生器)
fpga开发·数字信号处理·dsp·dds
嵌入式-老费2 天前
Linux Camera驱动开发(fpga + csi rx/csi tx)
fpga开发
ALINX技术博客3 天前
【202601芯动态】全球 FPGA 异构热潮,ALINX 高性能异构新品预告
人工智能·fpga开发·gpu算力·fpga
JJRainbow3 天前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
s9123601013 天前
FPGA眼图
fpga开发
北京青翼科技3 天前
【PCIe732】青翼PCIe采集卡-优质光纤卡- PCIe接口-万兆光纤卡
图像处理·人工智能·fpga开发·智能硬件·嵌入式实时数据库