国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單片機開發(fā)---ESP32-S3模塊上手

這篇具有很好參考價值的文章主要介紹了單片機開發(fā)---ESP32-S3模塊上手。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景介紹

想起來之前做的半成品單片機游戲機,又想繼續(xù)做一個,不過之前那個單片機驅動屏幕速率太低,已經無法改進了。所以這次斥巨資購買了一款頂配的ESP32S開發(fā)板,做個簡單的游戲機,沒問題。
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
完整介紹鏈接
這花花綠綠的介紹,看著讓人甚是喜歡呢。
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

開發(fā)環(huán)境搭建

參考樂鑫官網的方式,我選擇了windows開發(fā)環(huán)境
Windows 平臺工具鏈的標準設置

安裝完成會有兩個圖標,按照推薦選擇了cmd方式
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
雙擊運行

esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
隨便選擇一個工作目錄,將范例的代碼拷貝過來,就可以進行編譯燒錄了。

Hello World

必須先用hello world熱熱身
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

  1. 拷貝工程
    范例工程都在esp-idf\examples\下面
E:\esp32_new_tools>xcopy /e /i E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world hello_world
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\CMakeLists.txt
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\example_test.py
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\Makefile
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\README.md
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\sdkconfig.ci
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\main\CMakeLists.txt
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\main\component.mk
E:\esp32_new_tools\Espressif\frameworks\esp-idf-v4.4.3\examples\get-started\hello_world\main\hello_world_main.c
復制了 8 個文件

E:\esp32_new_tools>
  1. 配置工程

選擇開發(fā)目標,目前支持’esp32’, ‘esp32s2’, ‘esp32c3’, ‘esp32s3’, ‘linux’, ‘esp32h2’.

idf.py set-target esp32s3

配置參數

idf.py menuconfig

查看開發(fā)板手冊得知flash和內存類型
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
配置方法如下
flash大小
我買的是16MB flash
Serial flasher config —>
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
片外ram
Component config —> ESP32S3-Specific —>選中支持片外ram
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
再進入SPI ram config
選擇mode,切換為Octal模式
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
最后返回上一級,順帶改一下工作頻率
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
誰還嫌運行的快呢
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

  1. 編譯
idf.py build
  1. 燒寫與監(jiān)測串口

燒寫

idf.py -p COM6 flash

監(jiān)視串口

idf.py -p COM6 monitor

燒寫后監(jiān)視串口

idf.py -p COM6 flash monitor

啟動之后會看到Flash與內存大小
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

hello world只不過是一個延遲重啟的程序。
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
需要換一個
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

驅動OLED

買了一個SPI的TFT屏幕,還沒到貨,所以先驅動一個SPI的Oled屏幕。屏幕引腳說明
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

核心的中間層代碼如下

#define LCD_HOST    SPI2_HOST

#define PIN_NUM_MISO SPI2_IOMUX_PIN_NUM_MISO
#define PIN_NUM_MOSI SPI2_IOMUX_PIN_NUM_MOSI
#define PIN_NUM_CLK  SPI2_IOMUX_PIN_NUM_CLK
#define PIN_NUM_CS   SPI2_IOMUX_PIN_NUM_CS

#define PIN_NUM_DC   9
#define PIN_NUM_RST  4
#define PIN_NUM_BCKL 5

spi_device_handle_t spi;


void OLED_Write_SPI_Command(unsigned char SPI_Command)
	
{
    esp_err_t ret;
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));       //Zero out the transaction
    t.length=8;                     //Command is 8 bits
    t.tx_buffer=&SPI_Command;       //The data is the cmd itself
    t.user=(void*)0;                //D/C needs to be set to 0
    ret=spi_device_polling_transmit(spi, &t);  //Transmit!
    assert(ret==ESP_OK);            //Should have had no issues.
}
 
void OLED_Write_SPI_Data(unsigned char SPI_Data)
{
    esp_err_t ret;
    spi_transaction_t t;

    memset(&t, 0, sizeof(t));       		//Zero out the transaction
    t.length=8;                 			//Len is in bytes, transaction length is in bits.
    t.tx_buffer=&SPI_Data;          		//Data
    t.user=(void*)1;                		//D/C needs to be set to 1
    ret=spi_device_polling_transmit(spi, &t);  //Transmit!
    assert(ret==ESP_OK);            		//Should have had no issues.
}

//This function is called (in irq context!) just before a transmission starts. It will
//set the D/C line to the value indicated in the user field.
void lcd_spi_pre_transfer_callback(spi_transaction_t *t)
{
    int dc=(int)t->user;
    gpio_set_level(PIN_NUM_DC, dc);
}

void OLED_SPI_init()
{
	esp_err_t ret;
	spi_bus_config_t buscfg={
	.miso_io_num=PIN_NUM_MISO,
	.mosi_io_num=PIN_NUM_MOSI,
	.sclk_io_num=PIN_NUM_CLK,
	.quadwp_io_num=-1,
	.quadhd_io_num=-1,
	//.max_transfer_sz=PARALLEL_LINES*128*2+8
	};
	
	spi_device_interface_config_t devcfg=
	{
		.clock_speed_hz=10*1000*1000,			//Clock out at 10 MHz
		.mode=0,								//SPI mode 0
		.spics_io_num=PIN_NUM_CS,				//CS pin
		.queue_size=7,							//We want to be able to queue 7 transactions at a time
		.pre_cb=lcd_spi_pre_transfer_callback,	//Specify pre-transfer callback to handle D/C line
	};

	
    //Initialize non-SPI GPIOs
    gpio_set_direction(PIN_NUM_DC, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_RST, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_BCKL, GPIO_MODE_OUTPUT);

	//Reset the display
    gpio_set_level(PIN_NUM_RST, 0);
    vTaskDelay(100 / portTICK_RATE_MS);
    gpio_set_level(PIN_NUM_RST, 1);
    vTaskDelay(100 / portTICK_RATE_MS);
	
	//Initialize the SPI bus
	ret=spi_bus_initialize(LCD_HOST, &buscfg, SPI_DMA_CH_AUTO);
	ESP_ERROR_CHECK(ret);

	//Attach the LCD to the SPI bus
	ret=spi_bus_add_device(LCD_HOST, &devcfg, &spi);
	ESP_ERROR_CHECK(ret);
}

注意SPI Oled使用前需要復位操作。

    gpio_set_level(PIN_NUM_RST, 0);
    vTaskDelay(100 / portTICK_RATE_MS);
    gpio_set_level(PIN_NUM_RST, 1);
    vTaskDelay(100 / portTICK_RATE_MS);

主函數

void oled_setup()
{
	OLED_Init();
	OLED_ColorTurn(0);//0正常顯示 1反色顯示
	OLED_DisplayTurn(0);//0正常顯示 1翻轉180度顯示


	OLED_DrawBMP(0,0,128,64,BMP1); //顯示圖片
	vTaskDelay(1000 / portTICK_PERIOD_MS); //延時1秒 delay函數的單位為ms
	OLED_Clear();//清除界面

	OLED_ShowString(0,0,"PGG",16);

	OLED_ShowChinese(0,4,7,16);
	OLED_ShowChinese(20,4,8,16);

	OLED_ShowChinese(0,6,9,16);
	OLED_ShowChinese(20,6,10,16);
}


void oled_loop()
{
	int i = 0;
	for (;;) 
	{
		char show[8]={0};
		
        sprintf(show, "%d%%",i);
		OLED_ShowString(50,4,show,16);
		
        sprintf(show, "%d",i);
		OLED_ShowString(50,6,show,16);
		
        vTaskDelay(2000 / portTICK_PERIOD_MS);
		i++;
    }

}

顯示了一下之前做血氧儀的內容,包括漢字和字符
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

完整工程 ,適用于ESP-IDF 4.4版本,復制一個helloworld程序,覆蓋main路徑下的內容即可。
下載完整工程

esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
這套代碼用在其他平臺,也只需改三個函數適配,很簡單。
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled

注意事項

在帶有 OSPI PSRAM(即內置芯片為 ESP32-S3R8)的模組中,管腳 IO35、IO36、IO37 用于連
接至模組內部集成的 OSPI PSRAM,不可用于其他功能。

SPI用哪些引腳,通過example或者文檔,可以找到答案

esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
例如SPI2
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
那么代碼中

#define SPI2_IOMUX_PIN_NUM_HD   9
#define SPI2_IOMUX_PIN_NUM_CS   10
#define SPI2_IOMUX_PIN_NUM_MOSI 11
#define SPI2_IOMUX_PIN_NUM_CLK  12
#define SPI2_IOMUX_PIN_NUM_MISO 13
#define SPI2_IOMUX_PIN_NUM_WP   14

結束語

時隔許久又想起來寫點什么,好久沒玩單片機了,最近做了一個血氧儀,把之前的8266模塊又拾起來玩了一下
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
不過自己做的東西,自己也不確定好不好用,數據準不準,是不是挺可笑。不過這可能就是目前小廠員工的狀態(tài),用不知底的東西做出來的東西,有時候就沒有信息。
所以目前好多公司,還是會希望每個模塊,都需要自己吃透,才能放心用在自己產品了。所以人員一旦過少,無法研發(fā)出高質量的產品,因為只來得及用起來,沒有時間去思考為什么。
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
今天看到了這個消息
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled
普通人通過生孩子和努力還會成功嗎?
esp32-s3,單片機,C語言典型代碼,單片機,esp32s3,esp-idf,c語言,oled文章來源地址http://www.zghlxwxcb.cn/news/detail-817588.html

到了這里,關于單片機開發(fā)---ESP32-S3模塊上手的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 51單片機與ESP8266輕松上手Onenet(三)--溫度上傳onenet平臺

    51單片機與ESP8266輕松上手Onenet(三)--溫度上傳onenet平臺

    ??51單片機與ESP8266快速上手物聯(lián)網系列將一步步介紹89C51單片機將采集到的DS18B20的溫度數據通過ESP8266 WIFI模塊實時上傳到onenet云平臺這樣一個案例。 ? ? ? 前面我們硬件對ESP8266模塊刷入OneNET的AT固件(51單片機與ESP8266輕松上手Onenet(一)--Onetnet MQTT 固件燒錄),并對于OneNET-M

    2023年04月09日
    瀏覽(30)
  • ESP32單片機入門篇

    ESP32單片機入門篇

    目錄 一、ESP32單片機的基本概念 1.雙核架構 2. Wi-Fi和藍牙功能 3. 集成多種外設 4. 支持多種操作系統(tǒng) 二、開發(fā)環(huán)境 1. Arduino IDE 2. ESP-IDF 三、開發(fā)語言 四、注意事項 五、代碼例程 (1)點亮LED燈 1. 電路圖 2. 代碼 3. 代碼注釋 4. 注意事項 (2)控制繼電器 1. 電路圖 2. 代碼 3. 代碼

    2024年02月08日
    瀏覽(24)
  • 單片機項目分享 單片機(stm32)遠程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網 esp8266

    單片機項目分享 單片機(stm32)遠程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網 esp8266

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月19日
    瀏覽(30)
  • esp32單片機在arduino環(huán)境下,串口接收解碼

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言 一、pandas是什么? 二、使用步驟 1.引入庫 2.讀入數據 總結 當主控芯片發(fā)送一串數據,但此數據為一串字符串,需要將此字符串翻譯成整型數組,以形成指令,控制串口屏。 例如:esp32單

    2024年02月09日
    瀏覽(21)
  • esp32單片機在arduino環(huán)境下,WIF聯(lián)網

    文章目錄 系列文章目錄 前言 一、WIFI是什么? 二、使用步驟 1.引入庫 2.讀入數據 總結 隨著人工智能的不斷發(fā)展,物聯(lián)網這門技術也越來越重要,很多人都開啟了物聯(lián)網學習,本文就介紹了物聯(lián)網WIFI模塊的基礎內容。 WIFI在中文里又稱作\\\"行動熱點\\\",是 Wi-Fi聯(lián)盟 制造商的商標

    2024年02月15日
    瀏覽(25)
  • 【上位機與下位機通信】使用WIFI模塊ESP8266連接單片機與上位機通信

    【上位機與下位機通信】使用WIFI模塊ESP8266連接單片機與上位機通信

    承接上文WIFI上位機部分:【上位機】通過WIFI上位機與網絡調試助手通信繪制曲線,現(xiàn)階段實現(xiàn)了STM32單片機與ESP8266WIFI模塊作為下位機與WIFI上位機通信。 ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-無線)模塊,此處使用的是正點原子團隊自主開發(fā)的ATK-ESP-01模塊。

    2024年02月05日
    瀏覽(214)
  • 【Arduino環(huán)境下驅動合宙esp32c3單片機基本外設】

    【Arduino環(huán)境下驅動合宙esp32c3單片機基本外設】

    本教程是參加FastBond2活動主題4 - 測量儀器中的【Arduino環(huán)境下驅動合宙esp32c3單片機基本外設】。 圍繞FastBond2階段1——基于ESP32C3開發(fā)的簡易IO調試設備項目需求開發(fā)。 設計目標: 多種數字和模擬信號的輸入輸出:用戶可以選擇不同的輸入輸出模式,并通過設備的操作界面進行

    2024年02月04日
    瀏覽(34)
  • STM32+esp8266實現(xiàn)單片機與服務器的WiFi通信

    STM32+esp8266實現(xiàn)單片機與服務器的WiFi通信

    ? ? ? ? ?源碼已上傳至gitee: stm32: 一些stm32模塊使用經驗記錄 - Gitee.com https://gitee.com/lrf1125962926/stm32/tree/esp8266wifi%E9%80%9A%E4%BF%A1/ ????????本實驗采用STM32F1系列+esp8266 01s模塊,采用HAL庫開發(fā)。主控芯片哪個系列和型號都可以,只要有兩個串口(UART或者USART,以下統(tǒng)稱串口)

    2024年02月07日
    瀏覽(96)
  • 嵌入式項目分享 單片機(stm32)遠程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網 esp8266

    嵌入式項目分享 單片機(stm32)遠程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網 esp8266

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月21日
    瀏覽(787)
  • ESP32單片機使用DHT11溫濕度傳感器的實踐與代碼解析

    摘要:本文將介紹如何使用ESP32單片機與溫濕度傳感器進行連接和數據讀取。通過實例代碼的解析,幫助讀者了解實現(xiàn)溫濕度檢測的原理和方法。 一、引言 ESP32是一款功能強大的微控制器,廣泛應用于物聯(lián)網、智能家居等領域。在許多應用場景中,溫濕度傳感器是不可或缺的

    2024年02月21日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包