私はまた来ました。このセクションでは、ESP32 の I2C 周辺機器を使用し、江科大の OLED コードを移植する方法について説明します。
まず、江科大の OLED コードはソフトウェア I2C です。ここでは、ソフトウェア I2C の移植方法について説明します。
私たちが変更するファイルは主に OLED.c と OLED_Font.h の 2 つのファイルです。
まずは OLED.c です。このファイルでは、主に OLED_I2C_Init () 関数と OLED_W_SCL (x) および OLED_W_SDA (x) の 2 つのマクロ定義を変更します。
まず、"driver/gpio.h" ヘッダーファイルをインポートします(前のセクションで言い忘れました)。OLED_I2C_Init () の元の初期化内容に基づいて、2 つのピンを初期化します。1 つは SCL、もう 1 つは SDA で、どちらもオープンドレイン出力プルアップモードに設定します。
次に、OLED_W_SCL (x) と OLED_W_SDA (x) の 2 つのマクロ定義は、元の GPIO_WriteBit () から gpio_set_level () に変更されます。これで OLED.c の変更が完了しました。
最終的な効果は以下の通りです:
次に、OLED_Font.h ファイルを変更します。ここでは、内部の 2 次元配列の各グループに大括弧を追加する必要があります。なぜこうする必要があるのかはわかりませんが、コンパイラはそうすることを要求します()
これらを完了すると、コードの移植が完了します。次に、I2C 周辺機器の使用方法について説明します。
まず、ESP-WROOM-32 には 1 つだけ I2C 周辺機器があります。ピン定義図は以下の通りです:
つまり、22 番ピンが SCL、21 番ピンが SDA です。
では、I2C 周辺機器をどう設定するのでしょうか?
まず、i2c_config_t 構造体を設定します。この構造体には以下のパラメータが含まれます:
I2C_CONFIG_ST.clk_flags
クロック選択
I2C_CONFIG_ST.master.clk_speed
クロックスピード
I2C_CONFIG_ST.mode
I2Cモード(マスター/スレーブ)
I2C_CONFIG_ST.scl_io_num
SCLピン番号
I2C_CONFIG_ST.scl_pullup_en
SCLピン内部プルアップの使用有無
I2C_CONFIG_ST.sda_io_num
SDAピン番号
I2C_CONFIG_ST.sda_pullup_en
SDAピン内部プルアップの使用有無
構造体を設定したら、i2c_param_config () 関数を呼び出して I2C を初期化します。
次に、i2c_driver_install () を呼び出して I2C ドライバをインストールします。
続いて、i2c_cmd_link_create () を呼び出して I2C コマンドバッファを作成し、i2c_cmd_handle_t 変数を使用してハンドルを保存します。
その後、i2c_master_start () で I2C を開始し、i2c_master_write_byte () と i2c_master_read_byte () で読み書きを行います。
最後に、i2c_master_stop () で I2C を終了し、i2c_master_cmd_begin () でバッファのコマンドを送信し、i2c_cmd_link_delete () でバッファをクリアします。
これが I2C 周辺機器の使用の全プロセスです。これは旧バージョンの書き方で、新バージョンはすでに廃止されていますが、新バージョンの書き方がどうしても使えなかったので、最終的には旧バージョンを使用しました。
以下は実際のコードです:
引き続き、江科大のソースコードを基にして、ソフトウェア部分をハードウェアに変更しました。
以下は最終的な効果です:
それでは、今日はここまでです。886。