rt-thread/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout
Meco Man 21e35dbbfd [arduino][stm32l475 pandora]update readme 2022-07-15 10:09:50 +08:00
..
README.md [arduino][stm32l475 pandora]update readme 2022-07-15 10:09:50 +08:00
SConscript [stm32f401-nucleo] arduino support (#5842) 2022-04-20 09:09:58 +08:00
pins_arduino.c [arduino][stm32l475] support wireless module pinout 2022-06-23 21:28:27 +08:00
pins_arduino.h [arduino][stm32l475] support wireless module pinout 2022-06-23 21:28:27 +08: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) -- 该引脚在UNO板中为串口RX引脚不可当做普通IO
1 (D1) -- 该引脚在UNO板中为串口TX引脚不可当做普通IO
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) PD7 LCD 片选 CS
27 (D27) PB6 LCD 复位 RESET
28 (D28) PB4 LCD D/C 数据命令选择
29 (D29) PB7 LCD 背光电源
30 (D30) PD4 无线模块 CE
31 (D31) PD3 无线模块 中断
32 (D32) PD5 无线模块 片选 CS
A0 PC2 是(但不建议) ADC
A1 PC4 是(但不建议) ADC
A2 -- 芯片内部参考电压 ADC
A3 -- 芯片内部温度 ADC
DAC0 PA4 3.6V容忍 真模拟输出 DAC
-- PC7 I2C1-SDA被RT-Thread的I2C设备框架i2c1总线接管不可当做普通IO
-- PC6 I2C1-SCL被RT-Thread的I2C设备框架i2c1总线接管不可当做普通IO

注意:

  1. 驱动舵机和analogWrite函数要选择不同定时器发生的PWM信号引脚由于STM32的定时器4个通道需要保持相同的频率如果采用相同的定时器发生的PWM分别驱动舵机和analogWrite可能会导致舵机失效。
  2. USART1是潘多拉板的默认串口理论应对接到了Arduino引脚编号的D0和D1但是其实际用于串口通信因此不允许当做普通IO来使用和操作。

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 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头文件即可使用。

4 SPI总线

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

5 特殊功能说明

5.1 芯片内部ADC通道

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

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

5.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