ESP8266学習プロセス(6) - UART

頭字シリアルインタフェースポートとも呼ばれるシリアル通信インターフェースまたはシリアル通信インターフェース(通常COMインターフェース拡張シリアル通信インターフェース、)。シリアルインタフェース(シリアルインタフェース)は、データを順次1ビットを送信されることをいいます。

データ形式、文字、文字伝送、各文字伝送のために1ビット、および文字を送信するには、常に「開始ビット」「ストップビット」端で始まる場合、文字の間には一定の時間がありません間隔要件。
スタートビット(ロー)を有し、文字自体は、7データビットで構成されている各文字の前に、その後の文字は、パリティビット(チェックビットが奇数であってもよい、偶数またはパリティなし補正続いチェックデジット)、そして最後に1つまたは2つの半分または2つのストップビット、ストップビットがアイドルの後ろに可変長であり、ストップビットとスペアビットが高いとして定義されます。場合の各ビットの信号幅とボーレートの実際の伝送、より高いボーレート、送信前に小さい幅は、両側が同じボーレートの設定を使用しなければなりません。

唯一のいくつかのキーの主な機能のために、同じESP8266のために、このシリアルインタフェースも特に用意されている、などのBluetooth、超音波、この記事を:通常のシリアルポートは、一般的にデバッグするために使用したりなど、いくつかのモジュールを追加している使用して、このSTM32プラットフォームのようなものを使用解析;

ヘッダ

#include "driver/uart.h"

SDKに設けられた構成と同様のインターフェースSTM32シリアル、以下シリアルボーレート、データビット、ストップビット、パリティビット、等、ならびに割り込み受け取るような構成にシリアル割込み添加の構成よりも何も、割り込み送信タイム・アウト・ブレーク、および上そう。

シリアル・アレイ構成

typedef struct {
    int baud_rate;                      /*!< 串口波特率 */
    uart_word_length_t data_bits;       /*!< 字长(数据位)*/
    uart_parity_t parity;               /*!< 奇偶校验位 */
    uart_stop_bits_t stop_bits;         /*!< 停止位 */
    uart_hw_flowcontrol_t flow_ctrl;    /*!< UART硬件流控制模式(cts / rts) */
    uint8_t rx_flow_ctrl_thresh;        /*!< 设置串口RTS阈值 */
} uart_config_t;

シンプルな2つのステップでそれを使用するには:

  • のシリアルポートの設定パラメータ
  • UARTドライバのインストール

シリアルポートを介して二つ以上の段階で読み取ることができます。


シリアル・コンフィギュレーションパラメータ

私たちが作成した場合uart_config uart_config_t構造のみ設定することができますが、設定を完了するための関数を呼び出す必要があります。

UARTパラメータ設定機能

* esp_err_t uart_param_config(uart_port_t uart_num、uart_config_t uart_conf)

パラメータ 解決
uart_num 、UARTの数を設定するには
uart_conf uart_config_t構造

次のように関数のプロトタイプは次のとおりです。

esp_err_t uart_param_config(uart_port_t uart_num,  uart_config_t *uart_conf)
{
    UART_CHECK((uart_num < UART_NUM_MAX), "uart_num error", ESP_ERR_INVALID_ARG);

    if (uart_num == UART_NUM_1) {
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_U1TXD_BK);
    } else {
        PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0TXD_U);
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD);
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD);

        if (uart_conf->flow_ctrl & UART_HW_FLOWCTRL_RTS) {
            PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS);
        }

        if (uart_conf->flow_ctrl & UART_HW_FLOWCTRL_CTS) {
            PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_UART0_CTS);
        }

        uart_set_hw_flow_ctrl(uart_num, uart_conf->flow_ctrl, uart_conf->rx_flow_ctrl_thresh);
    }

    uart_set_baudrate(uart_num, uart_conf->baud_rate);		//波特率
    uart_set_word_length(uart_num, uart_conf->data_bits);	//字长
    uart_set_stop_bits(uart_num, uart_conf->stop_bits);		//停止位
    uart_set_parity(uart_num, uart_conf->parity);		    //奇偶校验位
    uart_reset_rx_fifo(uart_num);							

    return ESP_OK;
}

参照することは困難ではない、関数呼び出しは個別に使用することは非常に便利な、シリアルコンフィギュレーションの機能と併せて考慮されるパラメータの様々な、とインターフェースするように設定していますが、個別の設定を構成する場合、あなたはまた、対応するインタフェースを使用することができます設定します。

UARTドライバのインストール

GPIO割り込み、機能によってインストールされる割り込みサービスニーズとして開くことが同様のGPIOの設定、シリアルポートの設定が完了し、サービスは、次の関数を呼び出し、シリアルポートをインストールする必要があります。

esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int queue_size, QueueHandle_t *uart_queue);
パラメータ 解決
uart_num UARTポート番号
rx_buffer_size UARTは、サイズを受信バッファ
tx_buffer_size UART送信バッファサイズ。ゼロに設定した場合、ドライバはすべてのデータは、送信後に他の作業を実行する必要が出て送信されるまでバッファTX、TX関数はタスクをブロックします使用していません
queue_size UARTイベントキューサイズ/深さ
uart_queue UARTイベントキューハンドラ(出力パラメータ)。成功した場合、これはUARTイベントへのアクセスを提供するために、新しいキューハンドルを書き込みます。セットNULLの場合、ドライバはイベントキューを使用しません。

ユースケース:Bluetooth対応の受信および印刷(本明細書中で使用されるので、makeは9600をmenuconfigのモニタを提供するために必要な歪みが表示されないようにするためには、9600ボーのBluetooth 4.0です)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

#include "driver/uart.h"

static const char *TAG = "bluetooth test";


static void ble_task(void *arg)
{
    uart_config_t uart_config = {
        .baud_rate = 9600,                      //蓝牙波特率
        .data_bits = UART_DATA_8_BITS,          //8位数据位
        .parity    = UART_PARITY_DISABLE,       //无奇偶校验
        .stop_bits = UART_STOP_BITS_1,          //1位停止位
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE   //无硬件流
    };
    
    uart_param_config(UART_NUM_0, &uart_config);                //配置初始化
    uart_driver_install(UART_NUM_0, 1024 * 2, 0, 0, NULL);  //安装串口驱动
    
    uint8_t *pBuff = (uint8_t *) malloc(1024);
    
     while (1) {
        memset(pBuff, 0, 1024);
        int len = uart_read_bytes(UART_NUM_0, pBuff, 1024, 20 / portTICK_RATE_MS);
        if(len > 0)
            ESP_LOGI(TAG, "pBuff : %s\n", pBuff);
    }
}

void app_main(void)
{    
    xTaskCreate(ble_task, "uart_ble_task", 1024, NULL, 10, NULL);
}

結果:

ここに画像を挿入説明
説明:UARTインタフェースは、このようなボーエンはすぐにオーバープルとちょうどのみESP8266基礎を学び、理解することや公式が提供するインターフェースを見て、インターフェイス・ヘッダ・ファイルでノートを参照して、より多くのこの時点のここに公式の導入よりもすることができ、あまりにもそれらについての話をここに。


私のgithubの

私の個人的なブログ

CSDN

公開された33元の記事 ウォンの賞賛1 ビュー672

おすすめ

転載: blog.csdn.net/qq_41714908/article/details/105254824