ESp32 CH116驱动 IDF代码
时间: 2024-05-02 10:04:30 浏览: 181
驱动 CH116 USB 转串口芯片的 ESP32 IDF 代码可以参考以下步骤:
1. 在 ESP32 IDF 项目中,创建一个新的驱动文件夹,例如:components/ch116_driver。
2. 在 ch116_driver 文件夹下创建一个 ch116.c 文件,并添加如下代码:
```
#include "ch116.h"
#include "driver/uart.h"
static const char *TAG = "CH116";
#define CH116_UART_PORT UART_NUM_1
#define CH116_UART_RX_PIN GPIO_NUM_5
#define CH116_UART_TX_PIN GPIO_NUM_18
static void ch116_uart_init(void)
{
uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
ESP_ERROR_CHECK(uart_param_config(CH116_UART_PORT, &uart_config));
ESP_ERROR_CHECK(uart_set_pin(CH116_UART_PORT, CH116_UART_TX_PIN, CH116_UART_RX_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
ESP_ERROR_CHECK(uart_driver_install(CH116_UART_PORT, 1024, 1024, 0, NULL, 0));
}
void ch116_init(void)
{
ch116_uart_init();
}
void ch116_write(const uint8_t *data, size_t size)
{
uart_write_bytes(CH116_UART_PORT, (const char *)data, size);
}
int ch116_read(uint8_t *data, size_t size, uint32_t timeout)
{
return uart_read_bytes(CH116_UART_PORT, data, size, timeout / portTICK_RATE_MS);
}
void ch116_flush(void)
{
uart_flush(CH116_UART_PORT);
}
```
3. 在 ch116_driver 文件夹下创建一个 ch116.h 文件,并添加如下代码:
```
#ifndef __CH116_H__
#define __CH116_H__
#include "esp_err.h"
#include <stdint.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
void ch116_init(void);
void ch116_write(const uint8_t *data, size_t size);
int ch116_read(uint8_t *data, size_t size, uint32_t timeout);
void ch116_flush(void);
#ifdef __cplusplus
}
#endif
#endif /* __CH116_H__ */
```
4. 在 main.c 中调用 ch116_init() 函数进行初始化,并调用其它函数进行读写操作。
```
#include "ch116.h"
void app_main(void)
{
uint8_t tx_data[] = "Hello, CH116!\n";
uint8_t rx_data[32];
size_t rx_size;
ch116_init();
ch116_write(tx_data, sizeof(tx_data));
rx_size = ch116_read(rx_data, sizeof(rx_data), 1000);
rx_data[rx_size] = '\0';
printf("Received: %s\n", rx_data);
ch116_flush();
}
```
这样就可以在 ESP32 IDF 项目中使用 CH116 USB 转串口芯片了。
阅读全文