ESP32-S2中的外设

ESP32-S2中的外设

ESP32-S2中有丰富的外设部分,也就是和外部设备相连的部分。在这里对一些主要的做一个介绍,同时对一些通信总线进行对比。所有外设的使用官方都给出了例程,在官方给的IDF的peripherals文件夹中,同时官网上还有相关的一些说明:官方外设使用参考文档

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/peripherals/index.html

一.GPIO、RTC GPIO

GPIO是最基础的外设。除了用于最基础的信号输入写出,还可以模拟很多其他外设的数据线/时钟线来使用。如I2C,I2S,SPI等。RTC GPIO为某些可以使用RTC低功耗功能的GPIO管脚,当然也可以作为常规的GPIO来使用。

GPIO最大的作用就是输入输出,同时还可以添加中断。官方例程中给出了具体的使用方法。首先是定义管脚功能,比如输入、输出,上拉,下拉等。使用gpio_config_t可以进行各种功能的定义。

GPIO的中断程序在gpio_isr为前缀的相关函数中进行设置。

二.I2C

I2C总线全称为(Inter-Integrated Circuit),是一种双线同步串行总线。一共涉及两条线,SCL(serial clock时钟线)和SDA(serial data数据线)。I2C中有主机和从机之分,可以挂载多台机器,同时各机器之间的主从关系是可以互相改变的。同步通信就是通信双方工作在同一个时钟下,一般是通信的A方通过一根CLK信号线传输A自己的时钟给B,B工作在A传输的时钟下。所以同步通信的显著特征就是:通信线中有时钟线。I2C中双方工作在

整个通讯过程是主机发送起始位,发送从机地址,然后发送读/写指示位和数据段,发送到总线。挂载在总机上的机器根据自己的地址来判断是否接收/发送信号。然后发送方发送完数据接收方收完后,要回复一个确认字符ACK
(Acknowledge character)。然后主机发送停止位。即完成了收发。

在例程中可以看到基本的使用方法,1.初始化参数(包括主从机模式,还有用作时钟线和数据线的GPIO口,时钟速率等)初始化利用结构体i2c_config_t进行定义。
2.利用函数i2c_driver_install()进行驱动的安装
3.根据主从机读写方式等进行不同的函数操作,像主机可以采用i2c_master_start(),i2c_master_write_byte(),i2c_master_read_byte()等函数,从机有i2c_slave_read_buffer(),i2c_slave_write_buffer()等函数。

三.I2S

I2S的全称是(Inter-IC Sound) ,是三线同步串行总线,同I2C相似,除了时钟线和数据线外,还多了一条通道选择线。I2S一般用于音频数据的接收发送,因此I2S的驱动还可以调用内置的ADC和DAC。

通讯过程和使用方法与I2C类似。首先利用i2s_pin_config_t进行管脚的初始设置,再利用i2s_driver_install安装相关驱动,然后设置主从机,再开始相关的读写。

四.SPI

SPI的全称是(Serial Peripheral Interface),是同步双向串行总线。包含有主机向从机读取数据的MISO线,主机输出数据到从机的MOSI线,时钟SCLK,还有多根寻址用的CS(chip select)线。

SPI的使用方法首先是定义SPI总线:spi_bus_config_t,然后定义从机:spi_slave_interface_config_t,接着初始化总线和加入设备地址spi_bus_initialize,spi_bus_add_device,然后开始读写。同时SPI是可以单独进行一个字节的读写。

五.UART

UART全称为(Universal Asynchronous Receiver/Transmitter通用异步接收/发送装置),有两根线,一根用于发送,一根用于接收。UART没有主从机之分,利用波特率,奇偶校验位等进行通信。

UART的数据位一般如下:

ESP32-S2中的外设_第1张图片
使用UART的过程如下:利用uart_config_t进行初始的定义,包括波特率,停止位,奇偶校验位等,然后用uart_set.pin()设置用于数据交流的GPIO口(用于代替数据发送线和数据接收线)接着用uart_driver_install()进行驱动的安装,利用uart_write_bytes(),uart_read_bytes()进行数据的交流。

六.CAN

CAN总线的全称是(Controller Area Network),是目前应用最广泛的现场总线。挂载在网络中每个节点都可以向其他节点发送消息。非常的灵活。为了防止发生冲突,不同的节点间还可以设置优先级。

CAN总线的接口一般包含四根线,数据发送线,数据接收线,总线关闭线和时钟线,每根线同样都可以用GPIO口来进行代替。

CAN总线上的每个节点随时都可以开始工作,不需要按照一定的时序,当某个节点开始工作后,总线就先关闭,暂停接收其他节点的消息。等到该任务完成后再开放总线。当有许多节点同时需要进行工作时,按照优先级来进行任务的选择。

目前官方的文档还没有更新ESP32-S2关于CAN总线的部分,大致参考了ESP32的关于CAN总线的说明和例程。列举部分函数如下,从函数名就可以看到其作用:开启驱动can_drive_install();运行、结束CAN总线can_start(),can_stop(),读写数据can_receive(),can_transmit()

七.其他外设

以上介绍的是比较常见的通信总线,ESP32-S2中还包含了很多其他的外设,比如 LED control, Pulse control, Remote control, 时钟等。同时ESP32-S2还包含有USB OTG,在开发板上加装USB TYPEA口就可以当做USB主机来与其他USB设备进行通信。

你可能感兴趣的:(驱动,系统,物联网)