基于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.上板

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


总结

持续更新...

相关推荐
ZPC82105 天前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC82105 天前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
tiantianuser5 天前
RDMA设计53:构建RoCE v2 高速数据传输系统板级测试平台2
fpga开发·rdma·高速传输·cmac·roce v2
博览鸿蒙5 天前
FPGA 和 IC,哪个前景更好?怎么选?
fpga开发
FPGA_小田老师6 天前
xilinx原语:ISERDESE2原语详解(串并转换器)
fpga开发·iserdese2·原语·串并转换
tiantianuser6 天前
RDMA设计50: 如何验证网络嗅探功能?
网络·fpga开发·rdma·高速传输·cmac·roce v2
Lzy金壳bing6 天前
基于Vivado平台对Xilinx-7K325t FPGA芯片进行程序在线更新升级
fpga开发·vivado·xilinx
unicrom_深圳市由你创科技6 天前
医疗设备专用图像处理板卡定制
图像处理·人工智能·fpga开发
tiantianuser6 天前
RDMA设计52:构建RoCE v2 高速数据传输系统板级测试平台
fpga开发·rdma·高速传输·cmac·roce v2
luoganttcc6 天前
Taalas 将人工智能模型蚀刻到晶体管上,以提升推理能力
人工智能·fpga开发