9 个版本
| 0.2.0 | 2020年9月30日 |
|---|---|
| 0.1.8 | 2020年9月16日 |
| 0.1.5 | 2020年8月11日 |
| 0.1.3 | 2020年7月30日 |
#593 in 嵌入式开发
每月下载量:38
在 correlation_flow 中使用
53KB
945 行
px4flow_bsp
Rust no_std 嵌入式 HAL 板级支持包,用于 PX4FLOW 光流传感器硬件。
嵌入式示例
这些示例设计为与支持 J-Link / RTT 的调试器一起使用。我们提供了一些不同的运行方式
- 使用 Segger 工具(当前默认)
- 使用 probe-run(目前处于开发中,可能无法按预期工作。)
安装 Segger 工具
- 编辑 配置文件,选择
segger.gdb运行器 - 在一个 shell 中运行:
./start_gdb_server_jlink.sh - 在另一个 shell 中运行:
JLinkRTTClient - 然后运行您选择的示例
安装 probe-run
- 编辑 配置文件,选择
probe-run运行器 - 将 JLink 调试器连接到您的 PX4FLOW 并运行示例(见下文)
- 请注意,与 Segger 工具相比,RTT 输出到终端可能会慢得多。
运行示例
cargo run --example play --features rttdebug
中断处理
目前您需要配置您的应用程序以从应用程序级别的中断处理程序转发中断,即
/// should be called whenever DMA2 completes a transfer
#[interrupt]
fn DMA2_STREAM1() {
// forward to board's interrupt handler
unsafe {
(*BOARD_PTR.load(Ordering::SeqCst)).handle_dma2_stream1_interrupt();
}
}
/// should be called whenever DCMI completes a frame
#[interrupt]
fn DCMI() {
// forward to board's interrupt handler
unsafe {
(*BOARD_PTR.load(Ordering::SeqCst)).handle_dcmi_interrupt();
}
}
这假设您正在使用 cortex-m-rt crate 来构建您的嵌入式应用程序,并使用其 #[interrupt] 来处理中断。
状态
开发中
- 不会覆盖通常随板子一起提供的默认 PX4FLOW 启动加载程序
- 设置 DCMI 以从摄像头读取的示例
- 支持 spi2(l3gd20 陀螺仪)
- 支持 i2c1(外部 i2c 通信)
- 支持 i2c2(MT9V034 配置端口和 eeprom)
- 支持 USART2、USART3 和 UART4(声纳)
- 支持 i2c2 上的串行 eeprom
- DCMI 外设的初始设置
- DMA2 的初始设置
- DCMI→DMA2→图像缓冲区流水线基本正常
- 支持使用 probe-run 运行示例
- 支持使用 120x120 流帧(480 像素高度的第 4 个二进制文件)
- 支持可配置/全帧图像缓冲区(目前限制为 64x64)
- 支持使用MT9V034的完整10位bpp灰度分辨率
注意
- 唯一支持的调试模式是带有
rttdebug功能的RTT。这是因为PX4FLOW 1.x和2.x板仅提供SWD接口(没有简单的ITM解决方案)。 breakout功能旨在用于库开发和调试。目前它已配置为与"DevEBox STM32F4XX_M Ver:3.0"板(STM32F407VGT6)一起使用,该板不包括l3gd20陀螺仪或eeprom,例如Arducam MT9V034分线板("UC-396 RevA")。- 这已在CUAV PX4FLOW v2.3上进行过测试。在这块特定的板上,板底标注的SWD和SWCLK焊盘似乎已交换。
MCU引脚映射
| 引脚 | 配置 |
|---|---|
| PA0 | UART4_TX ("TIM5_CH1" - N/C) |
| PA1 | "TIM5_CH2"(未使用 - N/C) |
| PA2 | TIM5_CH3_EXPOSURE(拉低) |
| PA3 | TIM5_CH4_STANDBY(拉低) |
| PA4 | DCMI_HSYNC |
| PA5 | CAM_NRESET(连接到高电平) |
| PA6 | DCMI_PIXCK |
| PB6 | DCMI_D5 |
| PB7 | DCMI_VSYNC |
| PB8 | I2C1 SCL |
| PB9 | I2C1 SDA |
| PB10 | I2C2 SCL |
| PB11 | I2C2 SDA |
| PB12 | spi_cs_gyro |
| PB13 | SPI2 SCLK |
| PB14 | SPI2 CIPO |
| PB15 | SPI2 COPI |
| PC6 | DCMI_D0 |
| PC7 | DCMI_D1 |
| PC8 | XCLK |
| PC9 | "TIM8_CH4_LED_OUT"(未使用) |
| PC10 | DCMI_D8 |
| PC11 | UART4_RX |
| PC12 | DCMI_D9 |
| PD0 | TBD |
| PD5 | TBD |
| PD6 | TBD |
| PD7 | TBD |
| PD15 | TBD |
| PE0 | DCMI_D2 |
| PE1 | DCMI_D3 |
| PE2 | user_led0 |
| PE3 | user_led1 |
| PE4 | DCMI_D4 |
| PE5 | DCMI_D6 |
| PE6 | DCMI_D7 |
| PE7 | user_led2 |
依赖项
~55MB
~1.5M SLoC