【毕设调试一】WiFi模块esp8266的调试

硬件说明:

提示 :主控芯片STM32F103C8T6,与WiFi通信串口为串口二,打印串口为串口三(不使用串口一是当时设计时,方便pcb走线)

说明 :因为我是使用PCB画板的方式来走线的,并不是按模块来拼接的,走线的时候需要注意WiFi模块和主控芯片串口的连接(RX-TX),如下图所示,这个是可以直接安信可的手册上查到,不需要更改。(提醒一下,很多新手可能会找不到对应的原理图,或者是移植他人的,那么我们需要注意的是,我们自己的WiFi模块实际端口,与他人原理图端口还有封装端口是否对的上如下图本人的设计解释

①要首先确定WiFi模块,我是在立创商城购买的:ESP-12F(ESP8266MOD),安信可官网给出如图外观

②再确定原理图,电路外围可以参考安信可的手册,原理图是自己重新画的。(注意看我原理图的端口顺序,是从RST绕逆时针方向走到TX0,从1-22,电源是3.3V,C6和C8两个去耦电容与VCC端口走线尽量短

③确定封装,可以从立创商城直接导出,但并不代表可以直接用(本人走过的坑)。第一张图是立创商城给的封装图,第二张是我自己修改过后的封装图,两图是端口号是不一样  的,需要与原理图的端口号对上,那么焊接的时候才不会出现端口错误。第三张图是pcb的效果图(需要注意天线部分不可面对元器件,并且该部分不铺地,直接露空,信号线尽量在同一层,不要相等长度,过孔虽不会影响信号传送,但尽量少打,至于是否需要隔地,因为这个传输虽说不算太过高速,也只是用来完成毕设,暂时不考虑辐射问题)

                                   


串口配置

说明:因为这是我第一次尝试调试WIFI模块,也参考了大量其他博主的文章,才终于勉勉强强的调试出来,接下来说的是,我在调试过程中因为不了解WiFi模块而产生的各种问题。

我的第一个坑:相信大家看到的,很多博主都是把WiFi模块的指令烧进去,然后去测试该模块是否是正常运行(因为他们的模块是可以单独出来,使用串口助手来通信)。而当我解决的板子的问题时候才发现,我的并不可以这样直接烧写,来检测模块是否正常工作,那么我就只能通过单片机来与WiFi模块通信检测是否正常工作。而我比较好运,我买的模块都是正常的,这也是我为什么在硬件准备的时候,准备多了一个串口三来帮助我打印信息,这样子方便了我的调试(个人建议,大家自己画的板子一定要留一个串口来打印,好方便自己调试的各种问题)。

调试过程:

        AT指令,我们调试的时候离不开的就是它,我建议大家在开始之前先了解熟悉一下这个WiFi模块的AT指令,这样子好方便我们调试(可以在安信可官网查到所有指令,也都有解释,当然也可以看一些大佬的博客,也是有很多大佬写的很清晰的)。

配置串口三,用于和串口打印

#if 1
//#pragma import(__use_no_semihosting)       
#pragma (__use_no_semihosting)   
//标准库需要支持的函数
struct __FILE 
{
  int handle;
};

FILE __stdout;       
//定义_sys_exit()以避免工作在半主机状态
void _sys_exit(int x) 
{ 
  x = x; 
} 
//重定义fputc函数
//这个需要根据MCU和我们希望printf从哪个串口输出来确认 __WAIT_TODO__
int fputc(int ch, FILE *f)
{
	//注意:USART_FLAG_TXE是检查发送缓冲区是否为空,这个要在发送前检查,检查这个提议提高发送效率,但是在休眠的时候可能导致最后一个字符丢失
	//USART_FLAG_TC是检查发送完成标志,这个在发送后检查,这个不会出现睡眠丢失字符问题,但是效率低(发送过程中发送缓冲区已经为空了,可以接收下一个数据了,但是因为要等待发送完成,所以效率低)
	//不要两个一起用,一起用效率最低
	
	//循环等待直到发送缓冲区为空(TX Empty)此时可以发送数据到缓冲区
  while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET)
  {}
  USART_SendData(USART3, (uint8_t) ch);

  /* 循环等待直到发送结束*/
  while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET){}
  return ch;
}
#endif 

void uart3_Init(u32 bound)//串口3  引脚为PB10  PB11
{

    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断向量分组:第2组 抢先优先级:0 1 2 3 子优先级:0 1 2 3		
	
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //?′ó?í?íìê?3?
    GPIO_Init(GPIOB, &GPIO_InitStructure);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB11
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

    //Usart3 NVIC 配置
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//抢占优先级0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;      //响应优先级0
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //USART_IRQn通道使能
    NVIC_Init(&NVIC_InitStructure); //初始化NVIC

    //USART3 配置
    USART_InitStructure.USART_BaudRate = bound;//波特率
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//数据长度
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止位1
    USART_InitStructure.USART_Parity = USART_Parity_No;//校验位无
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流控制无
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //使能串口的接收和发送功能
    USART_Init(USART3, &USART_InitStructure); //初始化串口

    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//配置了接收中断中断
	USART_ITConfig(USART3, USART_IT_IDLE, ENABLE);//配置了总线空闲中断

    USART_Cmd(USART3, ENABLE);      //串口外设使能 (打印的测试串口)   
}

void USART3_IRQHandler( void )
{   
    u8 ucCh;

    if(USART_GetITStatus( USART3, USART_IT_RXNE ) != RESET ) //如果接收
    {
        ucCh  = USART_ReceiveData( USART3 );                         
回答: 在进行ESP8266 WiFi模块的串口调试时,可以使用电脑串口调试助手来验证模块连接是否正确。首先,确保已经连接好ESP8266模块,并打开电脑串口调试助手,设置波特率为115200。然后,可以发送"AT"指令给ESP8266,如果返回"OK",那就说明WiFi模块正常工作且线路连接正确。此外,还可以使用ESP8266_AT_Test()函数来恢复WiFi模块的出厂设置,并检测模块是否正常工作。发送的指令是"AT+RESTORE",如果WiFi模块回复"OK",则证明模块工作正常。通过查看电脑串口调试助手收到的ESP8266返回数据,可以判断设置指令是否成功。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [【毕设调试WiFi模块esp8266调试](https://blog.youkuaiyun.com/MHjtt/article/details/129707763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ESP8266 WIFI 模块串口调试过程-实现通过互联网实现数据远程传输(结尾含驱动代码链接)](https://blog.youkuaiyun.com/qq_34885669/article/details/99121122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值