当前位置:首页 > 通信技术 > 通信芯片
[导读]   最近刚开始玩ESP8266这个模块,主要是用在两个ESP8266之间的通信上,进行数据的传输。主要是把两个ESP8266分别配制成AP模式(服务器)和STA模式(客户端)。通过配置从而使其进

  最近刚开始玩ESP8266这个模块,主要是用在两个ESP8266之间的通信上,进行数据的传输。主要是把两个ESP8266分别配制成AP模式(服务器)和STA模式(客户端)。通过配置从而使其进行通信,由于固件在出厂时已经配置好了,我们这里主要用串口调试助手通过AT指令对需要的一些命令进行配置即可。

  ESP8266的基本配置与串口通信   AP模式(服务器):步骤如下

  1、AP模式的设置(指令:AT+CWMODE=2);//若以前设置过,这次设置想重新配置,可以通过指令:“AT+RESTORE”进行恢复出厂设置。

  2、配置ESP8266的AP参数(指令:AT+CWSAP=《ssid》,《pwd》,《chl》,《ecn》);

  3、重启(指令:AT+RST);

  4、设置多连接,开启TCP服务器(指令:AT+CIPMUX=1);

  5、建立TCP Server(指令:AT+CIPSERVER=1,5000);

  6、查询本地IP地址(方便后面的客户端连接用)(指令:AT+CIFSR);

  7、发送数据(以上6步完成后,先不写该指令,因为还没有client接入)(指令:AT+CIPSEND=《link.ID》,《length》)

  STA模式(客户端):步骤如下

  1、STA模式的设置(指令:AT+CWMODE=1);

  2、重启(指令:AT+RST);

  3、连接AP(指令:AT+CWJAP=《ssid》,《pwd》);

  4、建立TCP连接(指令:AT+CIPSTART=《type》,《remote IP》,《remote port》);(该指令执行完成后,可在服务器上配置发送数据指令:AT+CIPSEND)

  5、设置传输模式(指令:AT+CIPMODE=1);

  6、发送数据(指令:AT+CIPSEND);

  以下为AP(服务器)通过串口向STA(客户端)发送信息的事例(每发送一条信息前都需要先发一条指令:AT+CIPSEND=《link.ID》,《length》)

  (左边为服务器右边为客户端)(图中发送了两次,所以有16个8)

  以下为STA(客户端)通过串口向AP(服务器)发送信息的事例(因为设置成透传模式,所以只需要发送一次指令:AT+CIPSEND,以后再发信息就不用输入指令了。)

  (左边为服务器右边为客户端)(连续发送了三次“AT+CIPSEND”和“你好啊”)

  esp8266-SDK的串口发送和中断接收   1、发送

  调用uart_init(115200,115200);初始化串口,波特率设置为115200.前面一个是设置uart0的波特率、后面一个是设置、uart的波特率

  然后就可以使用uart0_tx_buffer(uint8 *buf, uint16 len)从uart0发送数据,同时也可以使用os_printf()函数来发送数据,不过需要注意如果是使用串口1

  想要使用os_printf()需要修改

  os_printf本接口默认从 UART 0 打印。IOT_Demo 中的 uart_init 可以设置波特率,其中

  os_install_putc1((void *)uart1_write_char) 将 os_printf 改为从 UART 1 打印

  2、接收

  进入串口初始化函数uart_init,可以看到如下函数

  system_os_task(uart_recvTask, uart_recvTaskPrio, uart_recvTaskQueue, uart_recvTaskQueueLen);

  这个函数是创建一个任务,就是用如处理串口0的接收数据的,

  uart_config(UART0);

  这就是配置串口寄存器,在这个里面有设置了串口的回调函数

  ETS_UART_INTR_ATTACH(uart0_rx_intr_handler, &(UartDev.rcv_buff));

  利用 ETS_UART_INTR_ATTACH设置了串口的回调函数uart0_rx_intr_handler

  在uart0_rx_intr_handler里面有各种中断的标志判断,正常的情况会进入UART_RXFIFO_TOUT_INT_ST,也就是,停⽌止传输的时间超过所设定的⻔门

  限值,然后调用system_os_post发送消息给在初始化函数uart_init创建的任务uart_recvTask,,然后大家看看uart_recvTask(os_event_t *events)

  LOCAL void ICACHE_FLASH_ATTR ///////

  uart_recvTask(os_event_t *events)

  {

  if(events-》sig == 0){

  #if UART_BUFF_EN

  Uart_rx_buff_enq();

  #else

  uint8 fifo_len = (READ_PERI_REG(UART_STATUS(UART0))》》UART_RXFIFO_CNT_S)&UART_RXFIFO_CNT;

  uint8 d_tmp = 0;

  uint8 idx=0;

  for(idx=0;idx《fifo_len;idx++) {

  d_tmp = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF;

  uart_tx_one_char(UART0, d_tmp);

  }

  WRITE_PERI_REG(UART_INT_CLR(UART0), UART_RXFIFO_FULL_INT_CLR|UART_RXFIFO_TOUT_INT_CLR);

  uart_rx_intr_enable(UART0);

  #endif

  }else if(events-》sig == 1){

  #if UART_BUFF_EN

  //already move uart buffer output to uart empty interrupt

  //tx_start_uart_buffer(UART0);

  #else

  #endif

  }

  }

  在这个里面就是把接收到的数据通过 uart_tx_one_char(UART0, d_tmp);一个个的发送出来,如果我们想处理

  自己接收的数据,只要把它放到缓冲区就处理就可以。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

串行通信需要传输的数据通过调制器(Modulator)将数据转换为模拟信号,经过信号调制(Modulation)后在传输线上传输,接收端通过解调器(Demodulator)将信号解码还原成原始数据。

关键字: 串口 串行通信 并行通信

51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺...

关键字: 单片机 全双工 串口

串口是“串行接口”的简称,即采用串行通信方式的接口。串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送,其特点是通信线路简单,但传输速度较慢。因此串口广泛应用于嵌入式、工业控制等领域中对数据传输速度要求不高的场合...

关键字: 串口 RS232 同步传输

串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。

关键字: 单片机 串口 STM32

这是FPGA之旅设计的第十例啦,在上一例中,已经成功驱动了OLED屏幕,本例将结合上一例,以及第四例多bytes串口通信做一个有趣的例程。

关键字: FPGA OLED屏 串口

接下来测试烧写功能,本次采用串口和USB烧写方式。使用ISP串口烧写这是51单片机常用的方案,本次测试比较顺利,没有遇到什么问题。但是USB烧写没有测试成功,USB烧写方式不需要任何的驱动和硬件支持,直接将USB线和ST...

关键字: PCB控制板 USB 串口

摘要:多功能电能表在配电系统中应用广泛,其计量的准确度对企业管理和考核至关重要,因此在设计多功能电能表时需要对其进行校准,满足一定应用等级。常规的多功能电能表校准方法是以电能脉冲校准为主,现提出一种基于C#和功率校表法的...

关键字: 多功能电能表 串口 波特率

摘 要:为了能通过串口采集电能参数,完成一种基于串口的三相电能采集设备的研制,设计了电能采集设备的硬件和软件部分。其中硬件采用MCU+专用电能计量芯片的结构,结构简单;软件则用于实现输入、输出、三相电能参数的采集和串行通...

关键字: 电能采集 ATT7022B MSP430 串口

如何确定时基假如要测量的波特率为9600,则每一比特位的时间为:1/9600≈104μs,一般示波器横向上每个大格子里5个小格子,要想看清一比特位一般需要一个小格子就够了,则时基为:104μs*5=520μs,也就是说时...

关键字: 串口

VivadoML最新版2021下载方法:《安装Vivado2021.1ML版,编译时间真的会减少吗?》今天我们通过zedboard串口使用的实例来简单介绍vivado和vitis的使用步骤。1,首先打开软件,新建一个空白...

关键字: 串口 zedboard vi
关闭
关闭