正在加载图示…
ST 的 84 MHz Cortex-M4 开发板,自带 ST-LINK 编程器:上面是 Arduino 插座,morpho 排针上引出每一个引脚,3.3 V 逻辑,一根 mini-USB 线就能供电、上传程序和串口通信。
每节课都在开发板上运行你自己的代码。通过这节课的检查,就能把它打勾完成。
按正确的顺序组装开发板,然后上电检查,就像在实验台上一样。
已完成 0/11 步拔掉 USB 线,以及 VIN 或 E5V 上接的任何电源。千万不要组装或维修带电的板子。
每一种故障都会在模拟中真实发生。触发一个,观察图示,再读一读原因。
Nucleo-F401RE 是两块板合二为一。上面三分之一、在一排可掰断的槽孔后面,是一个 ST-LINK/V2-1:一颗 STM32F103,由 mini-USB 插座供电,通过 SWD 给目标芯片编程,并把目标芯片的串口作为虚拟 COM 口传给你的电脑。下面是目标板:一颗 STM32F401RE(84 MHz 的 Arm Cortex-M4F,512 KB 闪存,96 KB RAM),带 Uno 风格的 Arduino 插座和两排 38 针的 ST morpho 排针,引出每一个引脚。逻辑电平是 3.3 V,但大多数引脚作为数字输入能承受 5 V。有三个跳线很重要:JP5 选择 +5V 来自 USB 还是外部电源,JP6 把 3.3 V 稳压器连到 MCU(拔掉它就能测电流),CN2 的两个跳线帽让 ST-LINK 能连到目标芯片。在 Arduino IDE 里,它是 STM32duino 核心中的 Nucleo-64 板:LED_BUILTIN 是 D13 上的绿色 LD2,USER_BTN 是 PC13 上的蓝色 B1,Serial 经过 ST-LINK 传输。
| 排针 | 引脚 | 名称 | 功能 | 电平 | 最大电流 | 备注 |
|---|---|---|---|---|---|---|
| CN6 | 1 | NC | – | – | – | |
| CN6 | 2 | IOREF | I/O reference for shields (+3V3) | 3.3 V | – | 连到 +3V3:告诉扩展板这块板的逻辑是 3.3 V。 |
| CN6 | 3 | NRST | RESET (active low) | 3.3 V | – | 拉 LOW 就复位 STM32。和 B2 以及 ST-LINK 共用,ST-LINK 在上传时会拉低它。 |
| CN6 | 4 | 3V3 | +3V3 from the LD39050 (U4) | 3.3 V | 500 mA | U4 的输出,500 mA,和 MCU 共用。只有在掰下 ST-LINK 或断开 SB2 和 SB12 时,它才能作为输入。 |
| CN6 | 5 | 5V | +5V rail, output | 5 V | – | 输出:来自 USB(经过 T2)的 +5V,或 JP5 插在 2-3 时来自 E5V/VIN 的 +5V。用 USB 供电时,所有负载都要控制在 300 mA 预算以内。 |
| CN6 | 6 | GND | GND | – | – | |
| CN6 | 7 | GND | GND | – | – | |
| CN6 | 8 | VIN | 7-12 V into the LD1117 (U3) | – | – | 7-12 V 输入,经过 LD1117:7 V 时 800 mA,9 V 以内 450 mA,12 V 以内 250 mA。没有防反接保护。要把 JP5 移到 2-3。 |
| CN8 | 1 | A0 | PA0, ADC1_IN0 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN8 | 2 | A1 | PA1, ADC1_IN1 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN8 | 3 | A2 | PA4, ADC1_IN4 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN8 | 4 | A3 | PB0, ADC1_IN8 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN8 | 5 | A4 | PC1, ADC1_IN11 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN8 | 6 | A5 | PC0, ADC1_IN10 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN5 | 1 | D8 | PA9, USART1 TX | 3.3 V耐 5 V | 20 mA | |
| CN5 | 2 | D9 | PC7, PWM TIM3_CH2 (1 kHz) | 3.3 V耐 5 V | 20 mA | |
| CN5 | 3 | D10 | PB6, PWM TIM4_CH1, SPI CS | 3.3 V耐 5 V | 20 mA | |
| CN5 | 4 | D11 | PA7, PWM TIM1_CH1N, SPI1 MOSI | 3.3 V耐 5 V | 20 mA | |
| CN5 | 5 | D12 | PA6, SPI1 MISO | 3.3 V耐 5 V | 20 mA | |
| CN5 | 6 | D13 | PA5, SPI1 SCK, LD2 | 3.3 V耐 5 V | 20 mA | LD2 经过 510 Ω 挂在这个引脚上。它也是 SPI1 的时钟,所以 SPI 工作时 LD2 会闪烁。 |
| CN5 | 7 | GND | GND | – | – | |
| CN5 | 8 | AVDD | VDDA / VREF+ (analog supply and ADC reference) | 3.3 V | – | ADC 的参考电压(VDDA),经过磁珠 L1 连到 VDD。它位于 Uno 上 AREF 的位置,但不是输入。 |
| CN5 | 9 | D14 | PB9, I2C1 SDA | 3.3 V耐 5 V | 20 mA | I2C1(Wire)。板上没有上拉电阻:要由模块或扩展板提供。 |
| CN5 | 10 | D15 | PB8, I2C1 SCL | 3.3 V耐 5 V | 20 mA | I2C1(Wire)。板上没有上拉电阻:要由模块或扩展板提供。 |
| CN9 | 1 | D0 | PA3, USART2 RX | – | – | 默认不连接:PA2/PA3(USART2)接到 ST-LINK,所以 Serial 是传到你的电脑上的。闭合 SB62/SB63 才会把它们引到排针上。 |
| CN9 | 2 | D1 | PA2, USART2 TX | – | – | 默认不连接:PA2/PA3(USART2)接到 ST-LINK,所以 Serial 是传到你的电脑上的。闭合 SB62/SB63 才会把它们引到排针上。 |
| CN9 | 3 | D2 | PA10, USART1 RX | 3.3 V耐 5 V | 20 mA | |
| CN9 | 4 | D3 | PB3, PWM TIM2_CH2, SWO | 3.3 V耐 5 V | 20 mA | |
| CN9 | 5 | D4 | PB5 | 3.3 V耐 5 V | 20 mA | |
| CN9 | 6 | D5 | PB4, PWM TIM3_CH1 | 3.3 V耐 5 V | 20 mA | |
| CN9 | 7 | D6 | PB10, PWM TIM2_CH3 | 3.3 V耐 5 V | 20 mA | |
| CN9 | 8 | D7 | PA8 | 3.3 V耐 5 V | 20 mA | |
| CN7 | 1 | PC10 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 2 | PC11 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 3 | PC12 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 4 | PD2 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 5 | VDD | MCU supply, after JP6 | 3.3 V | – | MCU 的电源,在 JP6 之后。在这里测量可以确认 JP6 是否插着。 |
| CN7 | 6 | E5V | External 5 V in (4.75-5.25 V, JP5 on 2-3) | 5 V | – | 外部 5 V 输入(4.75-5.25 V),JP5 插在 2-3 时直接连到 +5V。完全没有保护。 |
| CN7 | 7 | BOOT0 | BOOT0 (low = run from flash), Strapping 引脚 | 3.3 V | – | 板上把它拉到 LOW,所以 STM32 从闪存运行你的程序。用跳线把它接到 VDD(第 5 脚)就会改为启动 ST 的 ROM 引导程序。 |
| CN7 | 8 | GND | GND | – | – | |
| CN7 | 9 | - | – | – | – | |
| CN7 | 10 | - | – | – | – | |
| CN7 | 11 | - | – | – | – | |
| CN7 | 12 | IOREF | I/O reference (+3V3) | 3.3 V | – | 连到 +3V3:告诉扩展板这块板的逻辑是 3.3 V。 |
| CN7 | 13 | PA13 | SWDIO | 3.3 V耐 5 V | 20 mA | ST-LINK 用它们做 SWD。ST-LINK 连着时不要把它们当 I/O 用。 |
| CN7 | 14 | RESET | NRST (active low) | 3.3 V | – | 拉 LOW 就复位 STM32。和 B2 以及 ST-LINK 共用,ST-LINK 在上传时会拉低它。 |
| CN7 | 15 | PA14 | SWCLK | 3.3 V耐 5 V | 20 mA | ST-LINK 用它们做 SWD。ST-LINK 连着时不要把它们当 I/O 用。 |
| CN7 | 16 | +3.3V | +3V3 from the LD39050 (U4) | 3.3 V | 500 mA | U4 的输出,500 mA,和 MCU 共用。只有在掰下 ST-LINK 或断开 SB2 和 SB12 时,它才能作为输入。 |
| CN7 | 17 | PA15 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 18 | +5V | +5V rail, output | 5 V | – | 输出:来自 USB(经过 T2)的 +5V,或 JP5 插在 2-3 时来自 E5V/VIN 的 +5V。用 USB 供电时,所有负载都要控制在 300 mA 预算以内。 |
| CN7 | 19 | GND | GND | – | – | |
| CN7 | 20 | GND | GND | – | – | |
| CN7 | 21 | PB7 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 22 | GND | GND | – | – | |
| CN7 | 23 | PC13 | B1 USER, USER_BTN | 3.3 V耐 5 V | 3 mA | B1 的引脚,带 R30 的 4.7 kΩ 上拉。PC13 位于备份域:最多吸收 3 mA,而且不能输出电流,所以千万不要用它驱动 LED。 |
| CN7 | 24 | VIN | 7-12 V into the LD1117 (U3) | – | – | 7-12 V 输入,经过 LD1117:7 V 时 800 mA,9 V 以内 450 mA,12 V 以内 250 mA。没有防反接保护。要把 JP5 移到 2-3。 |
| CN7 | 25 | PC14 | LSE crystal X2 | – | – | 驱动 32.768 kHz 晶振 X2。只有闭合 SB48/SB49 时才会引到 CN7。 |
| CN7 | 26 | - | – | – | – | |
| CN7 | 27 | PC15 | LSE crystal X2 | – | – | 驱动 32.768 kHz 晶振 X2。只有闭合 SB48/SB49 时才会引到 CN7。 |
| CN7 | 28 | PA0 | A0, ADC1_IN0 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN7 | 29 | PH0 | OSC_IN (8 MHz clock from the ST-LINK) | 3.3 V | – | 时钟引脚:ST-LINK 的 8 MHz 时钟从 PH0(OSC_IN)进来。在振荡器模式下它们不耐 5 V;把它们留给时钟用。 |
| CN7 | 30 | PA1 | A1, ADC1_IN1 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN7 | 31 | PH1 | OSC_OUT | 3.3 V | – | 时钟引脚:ST-LINK 的 8 MHz 时钟从 PH0(OSC_IN)进来。在振荡器模式下它们不耐 5 V;把它们留给时钟用。 |
| CN7 | 32 | PA4 | A2, ADC1_IN4 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN7 | 33 | VBAT | RTC backup supply, tied to VDD | 3.3 V | – | 实时时钟的备用电源,经过 SB45 连到 VDD。 |
| CN7 | 34 | PB0 | A3, ADC1_IN8 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN7 | 35 | PC2 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 36 | PC1 | A4, ADC1_IN11 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN7 | 37 | PC3 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN7 | 38 | PC0 | A5, ADC1_IN10 | 3.3 V | 20 mA | ADC 输入读取 0 到 3.3 V(AVDD)。在模拟模式下引脚不耐 5 V:最高 4.0 V,所以模拟传感器要用 3V3 供电。 |
| CN10 | 1 | PC9 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 2 | PC8 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 3 | PB8 | D15, I2C1 SCL | 3.3 V耐 5 V | 20 mA | |
| CN10 | 4 | PC6 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 5 | PB9 | D14, I2C1 SDA | 3.3 V耐 5 V | 20 mA | |
| CN10 | 6 | PC5 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 7 | AVDD | VDDA / VREF+ | 3.3 V | – | ADC 的参考电压(VDDA),经过磁珠 L1 连到 VDD。它位于 Uno 上 AREF 的位置,但不是输入。 |
| CN10 | 8 | U5V | USB 5 V before the T2 switch | 5 V | – | T2 开关之前的 USB 5 V:一插上线就有。 |
| CN10 | 9 | GND | GND | – | – | |
| CN10 | 10 | - | – | – | – | |
| CN10 | 11 | PA5 | D13, SPI1 SCK, LD2 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 12 | PA12 | USB OTG FS D+ | 3.3 V耐 5 V | 20 mA | |
| CN10 | 13 | PA6 | D12, SPI1 MISO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 14 | PA11 | USB OTG FS D- | 3.3 V耐 5 V | 20 mA | |
| CN10 | 15 | PA7 | D11, SPI1 MOSI, PWM TIM1_CH1N | 3.3 V耐 5 V | 20 mA | |
| CN10 | 16 | PB12 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 17 | PB6 | D10, PWM TIM4_CH1 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 18 | - | – | – | – | |
| CN10 | 19 | PC7 | D9, PWM TIM3_CH2 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 20 | GND | GND | – | – | |
| CN10 | 21 | PA9 | D8, USART1 TX | 3.3 V耐 5 V | 20 mA | |
| CN10 | 22 | PB2 | BOOT1 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 23 | PA8 | D7 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 24 | PB1 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 25 | PB10 | D6, PWM TIM2_CH3 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 26 | PB15 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 27 | PB4 | D5, PWM TIM3_CH1 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 28 | PB14 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 29 | PB5 | D4 | 3.3 V耐 5 V | 20 mA | |
| CN10 | 30 | PB13 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 31 | PB3 | D3, PWM TIM2_CH2, SWO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 32 | AGND | GND | – | – | |
| CN10 | 33 | PA10 | D2, USART1 RX | 3.3 V耐 5 V | 20 mA | |
| CN10 | 34 | PC4 | GPIO | 3.3 V耐 5 V | 20 mA | |
| CN10 | 35 | PA2 | USART2 TX | – | – | 默认不连接:PA2/PA3(USART2)接到 ST-LINK,所以 Serial 是传到你的电脑上的。闭合 SB62/SB63 才会把它们引到排针上。 |
| CN10 | 36 | - | – | – | – | |
| CN10 | 37 | PA3 | USART2 RX | – | – | 默认不连接:PA2/PA3(USART2)接到 ST-LINK,所以 Serial 是传到你的电脑上的。闭合 SB62/SB63 才会把它们引到排针上。 |
| CN10 | 38 | - | – | – | – | |
| CN4 | 1 | VDD_TARGET | target voltage sense | 3.3 V | – | ST-LINK 自己的 SWD 口,用来给另一块板编程。要用它,先取下 CN2 的跳线帽。 |
| CN4 | 2 | SWCLK | SWD clock out | 3.3 V | – | ST-LINK 自己的 SWD 口,用来给另一块板编程。要用它,先取下 CN2 的跳线帽。 |
| CN4 | 3 | GND | GND | – | – | |
| CN4 | 4 | SWDIO | SWD data | 3.3 V | – | ST-LINK 自己的 SWD 口,用来给另一块板编程。要用它,先取下 CN2 的跳线帽。 |
| CN4 | 5 | NRST | target reset out | 3.3 V | – | ST-LINK 自己的 SWD 口,用来给另一块板编程。要用它,先取下 CN2 的跳线帽。 |
| CN4 | 6 | SWO | trace in | 3.3 V | – | ST-LINK 自己的 SWD 口,用来给另一块板编程。要用它,先取下 CN2 的跳线帽。 |
这块开发板能驱动的传感器和执行器,以及真实的接法。
PWM 引脚 D9 上经过 220 Ω 接一颗 LED:3.3 V 下约 5 mA。
| 零件引脚 | 开发板引脚 |
|---|---|
| A | D9导线颜色:橙色 |
| K | GND导线颜色:黑色 |
一定要加电阻。蓝色或白色 LED 本身就需要约 3 V,所以接在 3.3 V 引脚上只会微微发光。
一侧接 D2,另一侧接 GND,使用 INPUT_PULLUP。PC13 上的蓝色 B1 完全不需要接线。
| 零件引脚 | 开发板引脚 |
|---|---|
| 1 | D2导线颜色:蓝色 |
| 3 | GND导线颜色:黑色 |
两端接 GND 和 3V3,滑动端接 A0:设置 analogReadResolution(12) 后,analogRead() 读出 0-4095。
| 零件引脚 | 开发板引脚 |
|---|---|
| 1 | GND导线颜色:黑色 |
| W | A0导线颜色:黄色 |
| 3 | 3V3导线颜色:红色 |
用 3V3 给它供电,千万不要用 5V:模拟模式下的 ADC 输入最高只能承受 4.0 V,而且高于 3.3 V 的电压都读作 4095。
用 3V3 供电,接在 A1 上:25 °C 时为 750 mV,每 °C 变化 10 mV。
| 零件引脚 | 开发板引脚 |
|---|---|
| +Vs | 3V3导线颜色:红色 |
| Vout | A1导线颜色:黄色 |
| GND | GND导线颜色:黑色 |
信号接 PWM 引脚 D9;3.3 V 的脉冲对大多数模型舵机来说就够了。
| 零件引脚 | 开发板引脚 |
|---|---|
| SIG | D9导线颜色:橙色 |
| GND | GND导线颜色:棕色 |
用单独的 5 V 电源给它供电,并把地连在一起。用 USB 供电时整块板只有 300 mA,而舵机启动时要的更多。
VCC 接 5V,TRIG 接 D7,ECHO 接 D8。D8(PA9)耐 5 V,所以这里 5 V 的回波信号不需要分压。
| 零件引脚 | 开发板引脚 |
|---|---|
| VCC | 5V导线颜色:红色 |
| TRIG | D7导线颜色:黄色 |
| ECHO | D8导线颜色:绿色 |
| GND | GND导线颜色:黑色 |
ECHO 要接到数字引脚,千万不要接到用 analogRead() 读取的输入上:模拟模式下引脚最高只能承受 4.0 V。
VCC 接 3V3,SDA 接 D14,SCL 接 D15。GY-521 自带 Nucleo 所缺的 I2C 上拉电阻。
| 零件引脚 | 开发板引脚 |
|---|---|
| VCC | 3V3导线颜色:红色 |
| GND | GND导线颜色:黑色 |
| SCL | D15导线颜色:黄色 |
| SDA | D14导线颜色:蓝色 |
0.96 英寸 I2C OLED 接在 D14/D15 上,工作在 3.3 V;大多数模块自带上拉电阻。
| 零件引脚 | 开发板引脚 |
|---|---|
| GND | GND导线颜色:黑色 |
| VCC | 3V3导线颜色:红色 |
| SCL | D15导线颜色:黄色 |
| SDA | D14导线颜色:蓝色 |