5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 4405|回复: 4
打印 上一主题 下一主题

stm32F1配 SPI 介面 MPU6500 MPU9250  存储器 SPI-flash

[复制链接]
跳转到指定楼层
楼主
发表于 2018-1-19 16:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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





IMG_20180117_104048.jpg (60.99 KB, 下载次数: 54)

IMG_20180117_104048.jpg

20180119_102958.jpg (287.58 KB, 下载次数: 48)

20180119_102958.jpg

IMG_20180118_155410.jpg (430.92 KB, 下载次数: 49)

IMG_20180118_155410.jpg

IMG_20180118_155416.jpg (598.76 KB, 下载次数: 58)

IMG_20180118_155416.jpg

IMG_20180118_155457.jpg (276 KB, 下载次数: 53)

IMG_20180118_155457.jpg

IMG_20180118_155416.jpg (406.8 KB, 下载次数: 47)

IMG_20180118_155416.jpg

IMG_20180118_155457.jpg (276 KB, 下载次数: 58)

IMG_20180118_155457.jpg

欢迎继续阅读楼主其他信息

沙发
 楼主| 发表于 2018-1-19 16:56 | 只看该作者
本帖最后由 cmcli 于 2018-1-19 16:59 编辑

備註 程式碼 因為 5MIX  只能打5000字
燒錄我改過cc3d
cc3dmpu 6500 + FLASH 8M
==================

resource
resourceMOTOR 1 B09
resourceMOTOR 2 B08
resourceMOTOR 3 B07
resourceMOTOR 4 A08
resourceMOTOR 5 B06
resourceMOTOR 6 A02


resourcePPM 1 A01
resourcePWM 1 B05
resourcePWM 2 B00
resourcePWM 3 B01
resourcePWM 4 A00
resourcePWM 5 A01

resourcePWM 6 B04
resourceSERIAL_TX 1 A09
resourceSERIAL_TX 3 B10
resourceSERIAL_TX 11 B05
resourceSERIAL_RX 1 A10
resourceSERIAL_RX 3 B11
resourceSERIAL_RX 11 B00
resourceINVERTER 1 B02
resourceLED 1 B03
resourceSPI_SCK 1 A05
resourceSPI_SCK 2 B13
resourceSPI_MISO 1 A06
resourceSPI_MISO 2 B14
resourceSPI_MOSI 1 A07
resourceSPI_MOSI 2 B15
B12:FLASH_CS
B13:SPI_SCK 2
B14:SPI_MISO 2
B15:SPI_MOSI 2
C14:FREE

以上你在CLIresourceOR  resource list
都可以大致上看到f1PIN 功能
---------------------------------
CC3D下有
target.mk 這是加入甚麼功能 哪種F1f3 f4等等飛控
感測模組例如 MPU6500氣壓計 電子羅盤等等
target.h程式函數庫
等等四個檔案

我先這邊簡單介紹

#defineUSE_SPI   
#define USE_SPI_DEVICE_1
#define USE_SPI_DEVICE_2
定義SPI那些腳位有兩組

#defineMPU6000_CS_GPIO         GPIOA
#define MPU6000_CS_PIN          PA4   
CS
腳位
#defineMPU6000_SPI_INSTANCE    SPI1
//----------
#defineMPU6500_CS_GPIO         GPIOA
#define MPU6500_CS_PIN          PA4  
CS

#defineMPU6500_SPI_INSTANCE    SPI1  
意思說SPI用在MPU感測器
這邊當你MPU65006000都可以用


#defineM25P16_CS_GPIO          GPIOB
#define M25P16_CS_PIN           
PB12
這是快閃FLASH CS PIN
#defineM25P16_SPI_INSTANCE     SPI2
FLASH用在SPI2第二組SPI介面

#defineUSE_FLASHFS
#define USE_FLASH_M25P16

以下是定義60006500 方向 與使用函數
注意是6500是有ic2SPI 函數都要加入才能用
當初以為加入SPI就好後來發現無法編譯成功


#defineGYRO
#define USE_GYRO_SPI_MPU6000
#define GYRO_MPU6000_ALIGNCW270_DEG

#define USE_GYRO_SPI_MPU6500  
6500 SPI
函數
#defineUSE_GYRO_MPU6500   
6500 ic2
函數
#defineGYRO_MPU6500_ALIGN      CW0_DEG
6500 o
度也就是不轉方向



#defineACC
#define USE_ACC_SPI_MPU6000
#define ACC_MPU6000_ALIGNCW270_DEG

#define USE_ACC_SPI_MPU6500
#defineUSE_ACC_MPU6500
#define ACC_MPU6500_ALIGN       CW0_DEG


#defineUSE_VCP  啟動USB接線功能

最後我的 雲端可以下載
https://drive.google.com/open?id=1wBi_L49ujWTpGVO4jBczI7IPPLXmiygS



3
发表于 2018-1-19 18:43 | 只看该作者
多谢分享
来自苹果客户端来自苹果客户端
4
发表于 2018-1-20 17:42 | 只看该作者
谢谢
5
发表于 2018-2-5 11:22 | 只看该作者
高手啊,先收藏,再学习!
为什么文中都是繁体,而且还不断引用Google呢?

不支持W25Q80,是因为flash中有ID,不同型号的flash ID各不相同,在程序中已经有W25Q64的ID,所以才支持。程序位置在drivers/flash_m25p16.c中 line:47-56,加入你自己的flash ID试试,W25Q80的ID应该是:0xEF4014,这个flash才1M,不建议使用。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表