rt-thread/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout
Man, Jianting (Meco) c7a9481831
[rtduino] 对接STM32F412 NUCLEO (#6461)
2022-09-25 22:38:35 -04:00
..
README.md [rtduino]重新整理pinout (#6445) 2022-09-18 22:14:35 -04:00
SConscript [stm32f401-nucleo] arduino support (#5842) 2022-04-20 09:09:58 +08:00
pins_arduino.c [rtduino]重新整理pinout (#6445) 2022-09-18 22:14:35 -04:00
pins_arduino.h [rtduino] 对接STM32F412 NUCLEO (#6461) 2022-09-25 22:38:35 -04:00

README.md

STM32L475潘多拉的Arduino生态兼容说明

1 RTduino - RT-Thread的Arduino生态兼容层

STM32L475潘多拉已经完整适配了RTduino软件包即RT-Thread的Arduino生态兼容层。用户可以按照Arduino的编程习惯来操作该BSP并且可以使用大量Arduino社区丰富的库是对RT-Thread生态的极大增强。更多信息请参见RTduino软件包说明文档

1.1 如何开启针对本BSP的Arduino生态兼容层

Env 工具下敲入 menuconfig 命令,或者 RT-Thread Studio IDE 下选择 RT-Thread Settings

Hardware Drivers Config --->
    Onboard Peripheral Drivers --->
        [*] Support Arduino

2 Arduino引脚排布

该BSP遵照Arduino UNO板的引脚排列方式并扩展增加了潘多拉自身的板载资源功能引脚。详见 pins_arduino.c

2.1 Arduino引脚排布统览

Arduino引脚编号 STM32引脚编号 5V容忍 备注
0 (D0) PA10 Serial-Rx被RT-Thread的UART设备框架uart1接管
1 (D1) PA9 Serial-Tx被RT-Thread的UART设备框架uart1接管
2 (D2) PB9 普通IO
3 (D3) PD15 PWM定时器4发生
4 (D4) PA8 普通IO
5 (D5) PD14 普通IO
6 (D6) PB11 PWM定时器2发生
7 (D7) PB14 普通IO
8 (D8) PB12 普通IO
9 (D9) PD12 PWM定时器4发生
10 (D10) PB10 PWM定时器2发生
11 (D11) PB8 PWM定时器4发生
12 (D12) PB15 普通IO
13 (D13) PB13 普通IO
14 (D14) PA1 振动电机-A
15 (D15) PA0 振动电机-B
16 (D16) PB2 蜂鸣器
17 (D17) PD10 KEY0
18 (D18) PD9 KEY1
19 (D19) PD8 KEY2
20 (D20) PC13 KEY-WKUP
21 (D21) PE7 红色LED
22 (D22, LED_BUILTIN) PE8 绿色LEDArduino默认LED
23 (D23) PE9 蓝色LED具有PWM功能定时器1发生
24 (D24) PB0 3.6V容忍 红外发送
25 (D25) PB1 红外接收
26 (D26) PD4 无线模块 CE
27 (D27) PD3 无线模块 中断
28 (D28, SS) PD5 无线模块 片选 CS
29 (D29) PB13 SPI2-SCK默认被RT-Thread的SPI设备框架spi2总线接管
30 (D30) PB14 SPI2-MISO默认被RT-Thread的SPI设备框架spi2总线接管
31 (D31) PB15 SPI2-MOSI默认被RT-Thread的SPI设备框架spi2总线接管
32 (D32) PC7 I2C1-SDA默认被RT-Thread的I2C设备框架i2c1总线接管
33 (D33) PC6 I2C1-SCL默认被RT-Thread的I2C设备框架i2c1总线接管
34 (D34) PA2 Serial2-Tx默认被RT-Thread的UART设备框架uart2接管
35 (D35) PA3 Serial2-Rx默认被RT-Thread的UART设备框架uart2接管
A0 PC2 是(但不建议) ADC
A1 PC4 是(但不建议) ADC
A2 -- 芯片内部参考电压 ADC
A3 -- 芯片内部温度 ADC
DAC0 PA4 3.6V容忍 真模拟输出 DAC

注意:

  1. 驱动舵机和analogWrite函数要选择不同定时器发生的PWM信号引脚由于STM32的定时器4个通道需要保持相同的频率如果采用相同的定时器发生的PWM分别驱动舵机和analogWrite可能会导致舵机失效。

2.2 板载排针的Arduino引脚排布

STM32引脚编号 Arduino引脚编号 备注 STM32引脚编号 Arduino引脚编号 备注
PB8 11 (D11) PWM PB9 2 (D2) 普通IO
PC7 A4 I2C1-SDA PA8 4 (D4) 普通IO
PD15 3 (D3) PWM PC6 A5 I2C1-SCL
PD13 -- -- PD14 5 (D5) 普通IO
PC2 A0 ADC PD12 9 (D9) PWM
PB14 7 (D7) 普通IO PB15 12 (D12) 普通IO
PB12 8 (D8) 普通IO PB13 13 (D13) 普通IO
PB10 10 (D10) PWM PB11 6 (D6) PWM
PC4 A1 ADC PA4 DAC0 DAC

2.3 板载外设的Arduino引脚排布

外设名称 Arduino引脚编号 STM32引脚编号
振动电机-A 14 (D14) PA1
振动电机-B 15 (D15) PA0
蜂鸣器 16 (D16) PB2
KEY0 17 (D17) PD10
KEY1 18 (D18) PD9
KEY2 19 (D19) PD8
KEY-WKUP 20 (D20) PC13
红LED 21 (D21) PE7
绿LEDArduino默认LED 22 (D22, LED_BUILTIN) PE8
蓝LED具有PWM功能 23 (D23) PE9
红外发射 24 (D24) PB0
红外接收 25 (D25) PB1

3 通信

3.1 I2C总线

潘多拉Arduino支持三条I2C总线分别是i2c1、i2c3 和 i2c4。你可以通过pins_arduino.h文件中的 RTDUINO_DEFAULT_IIC_BUS_NAME 宏来设定Arduino的I2C总线默认为 i2c4 总线。其中:

  • i2c1 为用户总线PC7 为 SDAPC6 为 SCL。用户可以通过杜邦线连接其他 I2C 传感器/芯片。
  • i2c3 为板载 I2C 外设总线,连接板载 ICM20608陀螺仪和加速度传感器 和 AP3216C距离和光亮度传感器 芯片
  • i2c4 为板载 I2C 外设总线,连接板载 AHT10温湿度传感器 芯片

I2C的引脚都是被RT-Thread I2C设备框架接管的不需要直接操控这两个引脚直接引用#include <Wire.h>Arduino官方I2C头文件即可使用。

3.2 SPI总线

潘多拉板的Arduino SPI总线是spi2总线位置为板上左上角的WIRELESS插槽。 SCKMISOMOSI引脚是被RT-Thread SPI设备框架接管的不需要直接操控这3个引脚直接引用#include <SPI.h>Arduino官方SPI头文件即可使用。按照Arduino的编程标准用户需要自行控制片选信号默认为 SS, 即 D28

3.3 串口

默认支持通过 Serial. 方法调用 uart1 串口设备;通过 Serial2. 方法调用 uart2 串口设备。详见例程

3.4 USB

默认支持USB虚拟串口详见例程

4 特殊功能说明

4.1 芯片内部ADC通道

本BSP适配了STM32的两个芯片内部ADC通道可以通过 analogRead 函数来分别获取如下功能:

特殊功能 Arduino引脚编号 STM32引脚编号
芯片内部参考电压 ADC A2 --
芯片内部温度 ADC A3 --

4.2 真模拟输出功能 (True Analog Output)

Arduino的 analogWrite 函数虽为模拟写但是实际输出的是PWM数字信号并非真正的模拟信号。这是由于Arduino早期使用的AVR单片机并不支持DAC的功能因此这个习惯就被保留了下来。但是随着Arduino支持芯片的丰富部分高级芯片已经内建了DAC例如Arduino官方板MKR、Zero等因此Arduino的 analogWrite 函数后续也支持了真模拟输出功能。

特殊功能 Arduino引脚编号 STM32引脚编号
真模拟输出 (True Analog Output) DAC0 PA4

在潘多拉板上使用PA4来当做真模拟输出功能引脚使用方法为

analogWrite(DAC0, 1024); // STM32的DAC分辨率为12位因此第二个参数范围可以为0-4095