起因,因為想要裝光流感應器,但是找不到多的序列滬可用。
結論....最後從Ardupilot的定義檔案得知,他只有定義4個序列沪可用
USART1 Telem (Serial 1)
USART3 I2C
USART6 GPS (Serial 3)
UART4 (Serial 4)
或者:
SERIAL0 = 主機 = USB
SERIAL1 = 遙測 1 = USART1
SERIAL2 = 未分配(如果 BRD_ALT_CONFIG =1,則為 Telemetry2 = USART3)
SERIAL3 = GPS1 = USART6
SERIAL4 = GPS2 = UART4(如果 BRD_ALT_CONFIG = 2 或 3)
SERIAL5 = 未分配
SERIAL6 = 未分配
偏偏其中一組跟I2C共用,而GPS的磁羅盤又是必要
所以唯一做法就是使用S.Bus接收,然後把BRD_ALT_CONFIG = 3 使用背後RSSI跟CH5的接點變成UART4
如果 RSSI 參數設置為 2 或 3,則可以將 RSSI 焊盤重新用作 UART4 的 TX 輸出,而不是類比 RSSI 輸入BRD_ALT_CONFIG。如果 BRD_ALT_CONFIG 參數設置為 3,則 PWM 輸出引腳 5 變為 UART4 的 RX 引腳,以提供完整的附加 UART。此外,如果 BRD_ALT_CONFIG param 設置為 4,則 UART3 和 UART4 都處於活動狀態且可用。
以下是Ardupilot 的硬體定義檔案(好用)
https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro/hwdef.dat
這個RCGRPS的Blog有一些硬體資訊
https://www.rcgroups.com/forums/member.php?u=593263
其中比較好玩的是這個圖(看起來我手邊都是V2)
下面是F405的datasheet
https://www.arterychip.com/download/DS/DS_AT32F405_402_V2.00_EN.pdf
Ardupilot預設硬體整理如下
第一行應該是MCU硬體的PIN
#pwm output. 1 - 4 on main header, 5 & 6 on separated header w/o 5V supply, 7 & 8 on CH5 and CH6 pads
CH5,6沒有5V,7,8在後面的焊盤上
https://ardupilot.org/copter/_images/PWM7-8.jpg
PB0 TIM1_CH2N TIM1 PWM(1) GPIO(50)
PB1 TIM1_CH3N TIM1 PWM(2) GPIO(51)
PA3 TIM2_CH4 TIM2 PWM(3) GPIO(52)
PA2 TIM2_CH3 TIM2 PWM(4) GPIO(53)
PA1 TIM2_CH2 TIM2 PWM(5) GPIO(54)
PA8 TIM1_CH1 TIM1 PWM(6) GPIO(55)
PC8 TIM8_CH3 TIM8 PWM(7) GPIO(56)
PC9 TIM8_CH4 TIM8 PWM(8) GPIO(59)
還有發現一個問題是Mission Planner永遠顯示Bad Battery是因為下面兩個設定錯誤
BATT_VOLT_PIN
BATT_CURR_PIN
參考硬體參數 應該要這樣設定
define HAL_BATT_VOLT_PIN 12
define HAL_BATT_CURR_PIN 11
不過很神奇的是,即使設定錯誤還是有正確讀數??除了一直狂顯示BAD Battery
然後居然電流跟電壓感測器的設定值也有
define HAL_BATT_VOLT_SCALE 11
define HAL_BATT_CURR_SCALE 18.2
留言
張貼留言