文章

顯示從 6月, 2021 起發佈的文章

[筆記] 整理控制器 STM32 與無線晶片 ESP32 資料

圖片
        整理自己常使用的 MCU 控制器,下表是 STM32 系列晶片,F1/F2 核心是 ARM Cortex-M3,適用在網路或 USB 2.0 等周邊控制。F3/F4 核心為 ARM-M4,核心工作時脈更高, 適用在 ADC 資料擷取等控制 。F7/H7 系列是目前最高等級的控制器,H7 為雙核心,適用於影像或顯示方面的控制。         另外,常使用的無線網路控制器是樂鑫 ESP 晶片,下表是 ESP32 系列晶片,最早推出的晶片是 ESP8266 系列,不包含藍芽功能,網路傳輸速度為 75Mbps。後來推出 ESP32 系列,工作時脈較高,網路傳輸也較快,並且多了藍芽功能。         從 espressif 官網資料來看,ESP32-C3 ADC 具有 DMA 功能,之前 ESP32 和 S2 的 ADC 並沒有 DMA 模式。C3 有 DMA 模式,可以減少 CPU 功耗,在省電方面應能表現更佳。 應用 [1]  以 ESP32 無線網為基礎,存取共享CF卡的FTP系統 [2]  LD3320 離線語音辨識晶片與 ESP32 無線傳輸 [3]  以 STM32 晶片的 ADC 為基礎, 設計一個簡易示波器 [4]  在 STM32 控制器上實現一個 FTP server [5]  ESP8266 WiFi to RS485 (MODBUS TCP to RS232) [6]  STM32F373 控制板之自我測試程式

[應用] 以 ESP32 無線網為基礎,存取共享CF卡的FTP系統

圖片
系統架構         與虎尾科大教授合作開發 "以無線網路為基礎,透過 FTP 的方式存取共享的CF卡" 的系統,本系統由數個主要元件所組成,如下圖一所示,控制的核心為  ARM Cortex-M3  的晶片  STM32F207 ,無線通訊採用外接  ESP32S  的模組,參考 [1][2] ,模組韌體負責處理  FTP socket 連線。 STM32F207  與無線模組之間的介面採用  UART  或  SPI  通訊,負責雙向的傳送資料。         CF 卡介面採用硬碟的  IDE  介面,參考 [3] ,系統規劃兩個不同來源的訊號可以存取  CF 卡,但是同一時間只能允許其中一個訊號可存取,於是設計上規劃一個  bus  切換電路。 圖一:系統方塊圖         CF 卡介面說明: 首先,系統存取需檢查 CF 卡是否插在介面上面,可以透過  CF_nCD1  和 CF_nCD2  腳位訊號得知情況。 CF_nCS0 和 CF_nCS1 腳位用來區分不同位址空間,控制 IDE 的暫存器被定義在不同的位址空間。 CF_SA0~2 就是位址線, CF_D0~15 是資料線。        CF 卡的存取對應到  STM32F207 的 FMSC 介面,在韌體程式裡,將  FMSC 介面規劃為 16-bit Memory I/O 存取介面, 0x68000000 這個位址範圍分配給 CF_nCS0 使用,而 0x6C000000 這個位址範圍分配給 CF_nCS1 使用。 當硬體規劃好線路後,控制 CF 卡需要驅動程式才能進行讀寫,首先要把 CF 卡當成一個 IDE 硬碟來看待,然後設計驅動程式時需要了解如何存取 IDE 硬碟的指令,請參考 [5][6]。 圖二:電路板俯視圖       無線模組 ESP32 的韌體架構使用 FreeRTOS 做為系統的作業系統,韌體創建三個 task : TaskBlink 、 TaskWiFiConn 、 TaskFtp ,如下圖所示。第一個用來讓模組上的燈號每秒閃爍一次,第二個是 WiFi client 連線到 WiFi AP ,成功後,板子上的 D5 燈號會亮。原始碼提供兩種方式,一種是 WiFi station 模式,另一種是 WiFi AP 模式,端看環境適合哪一種使用方式。 第三