stm32F1配 SPI 介面 MPU6500 MPU9250 存储器 SPI-flash(W25Q64FVSSIG
) 編譯 INAV OR betaflight
首先你要有編譯環境
第一 Cygwin64 Terminal FOR WIN 缺點編譯很慢
教學網站
https://github.com/martinbudden/betaflight/blob/master/docs/development/Building%20in%20Windows.md
http://bbs.5imx.com/forum.php?mod=viewthread&tid=1268650
個人用到 gcc-arm-embedded PATH那邊搞不定
最後你下載 gcc-arm-embedded
COPY betaflight-3.2.4\tools
以下是我的範例
C:\cygwin64\home\cmcliasus\betaflight-3.2.4\tools
就可以編譯 gcc-arm 最後都是在你的betaflight版本 tools下
但是 INAV 要安裝 RULL 我裝不起來
第二 VMware Playe 外加 Ubuntu
https://github.com/martinbudden/betaflight/blob/master/docs/development/Building%20in%20Ubuntu.md
若是 INAV 的話 教學在這 需要多安裝 Install Ruby
https://github.com/iNavFlight/inav/blob/master/docs/development/Building%20in%20Ubuntu.md
下載原始碼
https://github.com/betaflight/betaflight/tree/v3.2.4
固件
https://github.com/betaflight/betaflight/releases
好了以上是 編譯環境 簡單介紹
現在來說 betaflight 編譯 STM32F1
STM32F103C8T6小系统板
8M 存储器 SPI-flash(W25Q64FVSSIG)
W25Q80BVSSIG FLASH SP 這個80 無法用 我也不知道為何
MPU-6500 GY-6500传感器模块
MPU-9250 GY-9250 這個有電子羅盤 INAV 有支援 IC2
目前使用F1 有cc3d naze 這兩個飛控版
先講CC3d優缺點
他有USB 模擬串口 SPI MPU6000 2m 存储器 SPI-flash
缺點是你買不到 MPU6000 了 所以我們要想辦法把 6000 改成 MPU6500 OR mpu9250
NAZE的優點 就是都用ic2 傳輸介面 官方HEX可以支援 MPU6500 9250等等
他的SPI 2可以 支援 SPI MPU6500 我試過
缺點 NO USB 可以透過編譯 啟動USB
目前我搞不定 存储器 SPI-flash 功能
燒錄我改過 cc3d
cc3d mpu 6500 + FLASH 8M
==================
resource
B12: FLASH_CS
B13: SPI_SCK 2
B14: SPI_MISO 2
B15: SPI_MOSI 2
C14: FREE
以上你在 CLI 打resource OR resource list
都可以大致上看到f1 PIN 功能
SPI接的方法
VCC 3V 5V OK
gen
scl =F1板子a5腳
SDA =mosi =A7
ADO=miso =a6
CS= a4
IC2更簡單
SCL
SDA
只要這兩條 外加 電源 VCC GEN
B12: FLASH_CS = FLASH 1號腳
B13: SPI_SCK 2 = FLASH 6
B14: SPI_MISO 2 = FLASH 2
B15: SPI_MOSI 2 = FLASH 5
FLASH 4 = GEN接地
FLASH 7 8 = VCC(只能接3.6V以下 5V一定燒壞)
FLASH 4 =VCC 要接不接都可以
剩下LED 看你要不要接
A01是PPM IN 也是 RC PWM IN AUX1
開發環境部分是
你在BETA FLIGHT 版本下可以看到 很多飛控板子 名字 F1 F3 F4 F7大致上這些
C:\cygwin64\home\betaflight-3.2.4\src\main\target
以CC3D 下有
target.mk 這是加入甚麼功能 哪種F1 f3 f4等等飛控
感測模組 例如 MPU6500 氣壓計 電子羅盤等等
target.h 程式函數庫
等等四個檔案
我先這邊 簡單介紹
#define USE_SPI
#define USE_SPI_DEVICE_1
#define USE_SPI_DEVICE_2
定義SPI 那些腳位 有兩組
#define MPU6000_CS_GPIO GPIOA
#define MPU6000_CS_PIN PA4 CS腳位
#define MPU6000_SPI_INSTANCE SPI1
//----------
#define MPU6500_CS_GPIO GPIOA
#define MPU6500_CS_PIN PA4 CS腳
#define MPU6500_SPI_INSTANCE SPI1 意思說 SPI 用在 MPU感測器
這邊當你 MPU6500 和 6000都可以用
#define M25P16_CS_GPIO GPIOB
#define M25P16_CS_PIN PB12 這是快閃 FLASH CS PIN
#define M25P16_SPI_INSTANCE SPI2
FLASH 用在 SPI2 第二組 SPI 介面
#define USE_FLASHFS
#define USE_FLASH_M25P16
以下是定義 6000 6500 方向 與使用函數
注意是 6500 是有ic2 SPI 函數都要加入才能用
當初以為加入 SPI就好 後來發現無法編譯成功
以上先簡單介紹到這
NAZE 部分
在 target.h 加入 #define USE_VCP 啟動 USB接線功能
在target.mk 加入 FEATURES = ONBOARDFLASH VCP
VCP 之後你的 NAZE 就可以用 USB 虛擬 COM 了
最後你需要買
ST-Link stlink V2 SWD接口STM8 STM32仿真器调试器stm32下载器
這是救援的 也可以當燒錄器 但是很標準 他會認定 藍色 藍色STM32F1板子是
64K 淘寶網也有128K 快閃空間 可是不一定 實際上 藍色STM32F1板子 c8 cb都是通樣技術 因為市場 所以區別了 代號但是硬體能力都是一樣的
STM32 ST-LINK Utility 軟體
和 USB TO TTL
Flash Loader Demonstrator 軟體 可以燒錄64K 128K可以選 給藍色STM32F1板子
燒錄給飛控板子 需要把boot 0 為HIGHT 建議這樣比較穩不管是 V2 OR TTL燒錄方式
BOOT0 H就對
之後我有空再研究看看 STM32F4 接上 MPU9250 8M MICRO SD記憶卡
目前 MIRCO SD 卡也是SPI 介面但是我一直都無法接 但是ARDUINI 板子可以讀到
SD卡模塊 fat32空間
https://drive.google.com/open?id=1wBi_L49ujWTpGVO4jBczI7IPPLXmiygS
|