MicroPython i.MXRT 快速参考:NXP i.MXRT 系列板卡的 machine 模块外设编程实战指南

发布时间:2026/9/20 23:53:34
MicroPython i.MXRT 快速参考:NXP i.MXRT 系列板卡的 machine 模块外设编程实战指南 MicroPython i.MXRT 快速参考NXP i.MXRT 系列板卡的 machine 模块外设编程实战指南【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropython本文是基于 MicroPython 官方仓库中 docs/mimxrt/quickref.rst 编写的 i.MXRT 系列板卡快速参考指南。它以 Teensy 4.0/4.1、NXP MIMXRT10xx-EVK 等开发板为对象系统覆盖 REPL 基本操作、GPIO、定时器、UART、PWM、ADC、SPI/I2C/I2S、RTC、SD 卡、OneWire/DHT 传感器驱动、以太网、正交编码器与信号计数器等全部常用外设的用法。读完本文你将掌握在 i.MXRT 板卡上用 MicroPython 完成从点灯、串口通信到电机 PWM 控制、音频采集、网络连接与文件传输的完整实战能力。Teensy 4.1 是 i.MXRT 移植参考板之一本文大量示例以其引脚命名为例。关于板卡选型、受支持的 MCU 型号i.MX RT1010/1015/1020/1050/1060/1064 等与技术规格可进一步阅读 docs/mimxrt/general.rstdocs/mimxrt/pinout.rst 提供了 UART/SPI/I2C/I2S/PWM/CAN/编码器各外设的完整引脚分配表docs/mimxrt/tutorial/intro.rst 是新手入门教程。安装 MicroPython 固件i.MXRT 板卡的固件安装方法因板而异详见教程的 Deploying the firmware 一节其中也包含故障排查小节。不同板卡的具体烧录方式Teensy 4.0/4.1使用板载引导加载程序与 PJRC 提供的 PC 端加载工具按下板上的按钮进入加载模式后执行teensy_loader_cli --mcuimxrt1062 -v -w firmware.hex上传固件MIMXRT10xx-EVK 系列板上有第二个 USB 口连接到一颗辅助 MCU插入电脑后会挂载为一个以板卡命名的磁盘把firmware.bin复制进去即开始烧录Seeed ARCH MIX 等其它板卡按教程对应小节操作。若希望从源码自行构建固件可参考 ports/mimxrt/README.md先make -C mpy-cross构建交叉编译器再进入ports/mimxrt/目录用make BOARD板卡名编译板卡名对应 ports/mimxrt/boards 下的子目录如TEENSY41、MIMXRT1060_EVK、SEEED_ARCH_MIX等。通用板卡控制MicroPython 的 REPL 位于 USB 端口上以 VCP虚拟串口模式配置。两个高频操作技巧Tab 补全在 REPL 中按 Tab 可列出对象拥有的方法快速探索 API粘贴模式Ctrl-E用于把一大段 Python 代码一次性粘贴进 REPL避免逐行执行与缩进问题。machine模块是访问板卡底层能力的主入口import machine machine.freq() # 获取 CPU 当前频率从 ports/mimxrt/modmachine.c 的源码可以看到i.MXRT 移植版在通用machine模块基础上额外注册了Pin、Timer、RTC以及条件编译启用的Encoder、Counter类通过MICROPY_PY_MACHINE_QECNT宏控制RT1010 等无正交编码器外设的芯片不注册并提供了machine.reset()、machine.bootloader()、machine.reset_cause()、machine.unique_id()等方法。例如machine.bootloader()在无自定义引导程序时通过ROM_RunBootloader直接进入 ROM 串行下载模式见 modmachine.c。延时与定时延时操作统一使用time模块import time time.sleep(1) # 休眠 1 秒 time.sleep_ms(500) # 休眠 500 毫秒 time.sleep_us(10) # 休眠 10 微秒 start time.ticks_ms() # 获取毫秒计数器 delta time.ticks_diff(time.ticks_ms(), start) # 计算时间差注意ticks_ms()是环形计数器适合计算较短时间差计算差值务必使用ticks_diff()而非直接相减以避免回绕问题。定时器Timeri.MXRT 移植版支持虚拟定时器即不绑定具体硬件定时器通道由软件调度实现from machine import Timer tim0 Timer(-1) tim0.init(period5000, modeTimer.ONE_SHOT, callbacklambda t:print(0)) tim1 Timer(-1) tim1.init(period2000, modeTimer.PERIODIC, callbacklambda t:print(1))period单位为毫秒tim0为 5 秒后触发一次的单次定时器tim1为每 2 秒触发一次的周期定时器定时器 ID 传-1表示让系统自动分配一个空闲的虚拟定时器槽位回调函数接收定时器对象本身作为参数。引脚与 GPIOGPIO 通过machine.Pin类操作引脚命名遵循板卡丝印编号与MCU 内部命名两套体系from machine import Pin p0 Pin(D0, Pin.OUT) # 在 GPIO0 上创建输出引脚 p0.on() # 置为高电平 p0.off() # 置为低电平 p0.value(1) # 置为高电平 p2 Pin(D2, Pin.IN) # 在 GPIO2 上创建输入引脚 print(p2.value()) # 读取电平返回 0 或 1 p4 Pin(D4, Pin.IN, Pin.PULL_UP) # 使能内部上拉电阻 p5 Pin(D5, Pin.OUT, value1) # 创建时即置为高电平 p6 Pin(pin.cpu.GPIO_B1_15, Pin.OUT) # 使用 MCU 内部引脚名不同板卡的可用引脚命名规则详见 docs/mimxrt/general.rst 中的设计决策Teensy 4.0、MIMXRT10xx-EVK 与 Olimex 板D0-Dxx与A0-AnnSeeed ARCH MIX 板J3_xx、J4_xx、J5_xx也可直接使用Pin.board板级命名或Pin.cpuMCU 级命名如GPIO_B1_15类中的引脚名。引脚名字典的注册位于 ports/mimxrt/machine_pin.cmachine_pin_cpu_pins_locals_dict与machine_pin_board_pins_locals_dict由make-pins.py依据各板卡 CSV 引脚表生成。注意事项MIMXRT1xxx-EVK 板上可能有其他板载器件占用这些引脚限制其输入/输出用途MIMXRT1010_EVK 的 Arduino 连接器上D4、D5、D9 默认未连接到 MCU需要对照原理图确认MIMXRT1170_EVK 的 Arduino 连接器内排分配D16–D23 位于 J9 的奇数引脚D17 默认未连接D24–D27 位于 J26 的奇数引脚需短接 J63–J66 跳线D29–D36 位于 J25 的奇数引脚D29、D30 默认未连接。对于低电平有效的外设如常见的低电平点亮 LED可以使用更高级的抽象machine.Signal它支持电平反转从而能直接用on()或value(1)点亮 LED。UART串行总线UART 通过machine.UART类访问。i.MXRT 芯片最多提供8 个硬件 UART但并非每块板卡都把全部 TX/RX 引脚引出各板卡引脚分配见 docs/mimxrt/pinout.rst 的 UART 引脚分配表from machine import UART uart1 UART(1, baudrate115200) uart1.write(hello) # 写入 5 字节 uart1.read(5) # 最多读取 5 字节 uart1 UART(baudrate19200) # 打开 UART 1波特率 19200关键行为与 ports/mimxrt/machine_uart.c 中的宏定义一致省略 UART ID 时默认选择 UART(1)此时必须使用baudrate关键字参数才能修改默认波特率默认值 115200默认收发缓冲区大小 256 字节可配置范围为 32–32766 字节每块板的 UART 到引脚映射是固定的由IOMUX_TABLE_UART静态表决定例如 Teensy 4.x 上 UART1 对应 D0/D1、UART2 对应 D7/D8、UART3 对应 D14/D15更多编号见引脚分配表。PWM脉宽调制i.MXRT 的 PWM 能力来自两类硬件模块FLEXPWM最多 4 个模块每个含 4 个子模块、每个子模块 A/B/X 三个通道与QTMR最多 4 个模块、每模块 4 通道。machine.PWM类支持通用 PWM 的全部基本方法并额外提供了处理信号组、互补对、死区等高级方法。基本用法from machine import Pin, PWM # 由引脚创建 PWM 对象设置频率与占空比 pwm2 PWM(Pin(D2), freq2000, duty_u1632768) pwm2.freq() # 获取当前频率 pwm2.freq(1000) # 设置/修改频率 pwm2.duty_u16() # 获取当前占空比范围 0-65535 pwm2.duty_u16(200) # 设置占空比范围 0-65535 pwm2.deinit() # 关闭该引脚上的 PWM # 在 Pin 2 和 Pin 3 上创建互补信号对 pwm2 PWM((D2, D3), freq2000, duty_ns20000) # 创建一组 4 路同步信号 # 以子模块 0 的 Pin(D4) 作为同步脉冲源 pwm4 PWM(Pin(D4), freq1000, alignPWM.HEAD) # D5、D6、D9 位于同一模块 pwm5 PWM(Pin(D5), freq1000, duty_u1610000, alignPWM.HEAD, syncTrue) pwm6 PWM(Pin(D6), freq1000, duty_u1620000, alignPWM.HEAD, syncTrue) pwm9 PWM(Pin(D9), freq1000, duty_u1630000, alignPWM.HEAD, syncTrue) pwm3 # 查看 PWM 对象的属性构造参数详解PWM(dest, freq, duty_u16, duty_ns, *, center, align, invert, sync, xor, deadtime)destPWM 输出目标通常是一个machine.Pin对象也可以是单个对象或两元素对象元组。元组形式表示两引脚以互补模式工作且这两个引脚必须是同一子模块的 A/B 通道源码 machine_pwm.c 中会校验两者实例与子模块一致否则抛出ValueErrorfreq整数PWM 周期频率Hz。有效范围从约 15/18/24 Hz 到 1 MHz下限因芯片而异源码中由calc_prescaler计算预分频器超出范围会报 PWM frequency too low设置freq会同时影响同一 FLEXPWM 子模块的 3 个通道duty_u16占空比表示为duty_u16 / 65535的比例。X 通道的占空比只有在所在子模块的 A、B 通道均未使用时才能修改否则 X 通道固定为 3276850%duty_ns脉冲宽度纳秒。X 通道的上述限制同样适用duty_u16与duty_ns同一时刻只能指定其一centervalue整数设置脉冲在周期内的中心位置范围 0–65535。脉冲将从center - duty_u16/2持续到center duty_u16/2alignvalue脉冲中心设置的快捷方式——0为居中1为脉冲前沿对齐到周期起点2为后沿对齐到周期末尾对应源码中的PWM_MIDDLE/PWM_BEGIN/PWM_END宏见 machine_pwm.c默认居中为 32768invertvalue通道掩码置位则反转对应通道输出。bit0 反转第一个指定通道bit1 反转第二个默认 0单通道对象可直接用True/FalsesyncTrue|False若某模块的子模块 0 已有一个激活通道可强制同一模块的其他子模块与子模块 0 同步使脉冲周期起点对齐到同一时钟周期默认 False源码中sync仅在submodule ! 0时生效xor0|1|2设置为 1 或 2 时通道输出 A 与 B 的异或信号。设为 1 时 A、B 输出相同信号设为 2 时 A、B 输出交替信号。细节参见 MCU 参考手册 Double Switching PWMs 章节源码通过 FLEXPWM 的DBLEN/SPLIT位实现见 machine_pwm.cdeadtimetime_ns作用于互补通道定义第一通道边沿到下一通道边沿之间的死区时间期间两通道均输出低电平。这让 H 桥能够在推挽驱动的一侧关断后再接通另一侧防止直通短路。init()方法支持与构造函数相同的全部关键字参数。频率公式与硬件原理每个 FLEXPWM 子模块或 QTMR 模块可运行在不同频率。PWM 信号由pwm_clk除以整数因子产生f pwm_clk / (2**n * m)其中n范围 0–7预分频器m范围 2–65535计数周期。pwm_clk为 125 MHzMIMXRT1010/1015/1020、150 MHzMIMXRT1050/1060/1064、160 MHzMIMXRT1170。据此推导最低频率为pwm_clk/2**23分别约 15、18、20 Hz16 位分辨率下的最高频率为pwm_clk/2**16约 1907、2288、2441 Hz1% 分辨率下的最高频率为pwm_clk/100约 1.25、1.5、1.6 MHz理论最高频率A/B 通道为pwm_clk/3X 通道与 QTMR 信号为pwm_clk/2。该公式与 machine_pwm.c 中calc_prescaler的实现一致以pwm_clk / 65536 / freq为基准逐步加倍预分频直至分频系数 ≤1。时钟源方面MIMXRT117x 系列使用kCLOCK_Root_Bus其余系列使用kCLOCK_IpgClk。PWM 引脚分配引脚以与Pin类相同的方式指定。完整分配表见 docs/mimxrt/pinout.rst 的 PWM 引脚分配表其中图例约定Qm/n表示 QTMR 模块 m 的通道 nFm/n/l表示 FLEXPWM 模块 m、子模块 n、通道 lX 通道的脉冲始终对齐周期起点。标有(*)的引脚默认未在板上布线标有()的引脚有其他 PWM 备选方案。同一信号可能出现在多个引脚FlexPWM 引脚也可能是纯 CPU 引脚未接到板卡信号此时 PWM 输出被禁用但子模块 0 的通道仍可作为同模块其他通道的同步源。ADC模数转换i.MXRT 的 ADC 功能位于标注为Ann的引脚上from machine import ADC adc ADC(Pin(A2)) # 在 ADC 引脚上创建 ADC 对象 adc.read_u16() # 读取值0-65535 对应 0.0V - 3.3V 电压范围精度说明ADC 硬件分辨率为 12 位实际精度约 10–11 位与read_u16()返回的 16 位数值无关。若需要更高分辨率或更好精度请使用外部 ADC 芯片。软件 SPI 总线软件 SPI 通过位操作bit-banging实现可在所有引脚上工作使用machine.SoftSPI类from machine import Pin, SoftSPI # 在给定引脚上构建 SoftSPI 总线 # polarity 是 SCK 的空闲电平 # phase0 表示在 SCK 第一个边沿采样phase1 表示第二个边沿 spi SoftSPI(baudrate100000, polarity1, phase0, sckPin(D0), mosiPin(D2), misoPin(D4)) spi.init(baudrate200000) # 重新设置波特率 spi.read(10) # 在 MISO 上读取 10 字节 spi.read(10, 0xff) # 读取 10 字节同时在 MOSI 上输出 0xff buf bytearray(50) # 创建缓冲区 spi.readinto(buf) # 读入缓冲区此处读取 50 字节 spi.readinto(buf, 0xff) # 读入缓冲区并在 MOSI 上输出 0xff spi.write(b12345) # 在 MOSI 上写入 5 字节 buf bytearray(4) # 创建缓冲区 spi.write_readinto(b1234, buf) # 写入 MOSI 并从 MISO 读入缓冲区 spi.write_readinto(buf, buf) # 将 buf 写入 MOSI 并将 MISO 读回 buf软件 SPI 最高支持的波特率为500000。硬件 SPI 总线i.MXRT 最多提供4 个硬件 SPI 通道支持更快的传输速率最高约 30 MHz。硬件 SPI 使用machine.SPI类方法集与上述软件 SPI 相同from machine import SPI, Pin spi SPI(0, 10000000) cs_pin Pin(D6, Pin.OUT, value1) cs_pin(0) spi.write(Hello World) cs_pin(1) spi SPI(baudrate4_000_000) # 使用 SPI(0)波特率 4 MHz要点与注意事项各板卡的 SPI 信号到引脚分配固定见 docs/mimxrt/pinout.rst 的硬件 SPI 引脚分配表信号顺序为 CS0、CS1、MOSI、MISO、CLKcsn关键字n 为 0 或 1可启用自动片选信号默认cs-1不产生自动片选此时需由脚本自行控制 CS清除该赋值需要重新上电省略 SPI ID 时默认选择 SPI(0)此时必须用baudrate关键字参数修改默认波特率当前最高可靠波特率约 30 MHz但设置波特率并不总能得到精确频率高频段尤甚测试中接收在最高 60 MHz 下可用、发送在最高 90 MHz 下可用但实际使用建议以 30 MHz 为可靠上限。软件 I2C 总线软件 I2C 同样是位操作实现可在所有具备输出能力的引脚上工作使用machine.SoftI2C类from machine import Pin, SoftI2C i2c SoftI2C(sclPin(D5), sdaPin(D4), freq100000) i2c.scan() # 扫描总线上的设备 i2c.readfrom(0x3a, 4) # 从地址 0x3a 的设备读取 4 字节 i2c.writeto(0x3a, 12) # 向地址 0x3a 的设备写入 12 buf bytearray(10) # 创建 10 字节缓冲区 i2c.writeto(0x3a, buf) # 将缓冲区写入从设备软件 I2C 最高支持的频率为400000400 kHz。硬件 I2C 总线i.MXRT 最多提供4 个硬件 I2C 通道支持更快传输速率并完整实现 I2C 协议。I2C 信号与 GPIO 引脚为固定分配各板分配见 docs/mimxrt/pinout.rst 的硬件 I2C 引脚分配表信号顺序为 SDA、SCLfrom machine import I2C i2c I2C(0, 400_000) i2c.writeto(0x76, bHello World) i2c I2C(freq100_000) # 使用 I2C(0)频率 100 kHz省略 I2C ID 时默认选择 I2C(0)此时必须用freq关键字参数修改频率。I2S 总线数字音频I2S 用于与音频编解码器交换数字音频流通过machine.I2S类访问。MIMXRT 板卡在板级连接器上提供 1 或 2 条 I2S 总线MIMXRT1010 器件上总线号为 1 和 3信号与引脚固定分配见 docs/mimxrt/pinout.rst 的 I2S 引脚分配表。示例 1Teensy 4.1 简单外部编解码器如 UDA1334from machine import I2S, Pin i2s I2S(2, sckPin(D26), wsPin(D27), sdPin(D7), modeI2S.TX, bts16, formatI2S.STEREO, rate44100, ibuf40000) i2s.write(buf) # 将音频采样缓冲写入 I2S 设备示例 2MIMXRT10xx_DEV 板 WM8960 编解码器录音from machine import I2S, I2C, Pin import wm8960 i2c I2C(0) wm wm8960.WM8960(i2c, sample_rateSAMPLE_RATE_IN_HZ, adc_syncwm8960.sync_dac, swapwm8960.swap_input) i2s I2S(1, sckPin(SCK_TX), wsPin(WS_TX), sdPin(SD_RX), mckPin(MCK), modeI2S.RX, bts16, formatI2S.MONO, rate32000, ibuf10000) i2s.readinto(buf) # 用音频采样填充缓冲区此例在 WM8960 驱动中交换了输入通道因为板载麦克风连接在右声道而单声道音频取自左声道。注意sck与ws引脚接在 I2S 总线的 TX 信号上这是有意为之——WM8960 编解码器上这些信号为 RX/TX 共用。wm8960模块位于 ports/mimxrt/modules板载模块目录。示例 3Teensy 音频扩展板SGTL5000 编解码器from machine import I2C, I2S, Pin from sgtl5000 import CODEC i2s I2S(1, sckPin(D21), wsPin(D20), sdPin(D7), mckPin(D23), modeI2S.TX, bits16, rate44100, formatI2S.STEREO, ibuf40000, ) # 配置 SGTL5000 编解码器 i2c I2C(0, freq400000) codec CODEC(0x0A, i2c) codec.mute_dac(False) codec.dac_volume(0.9, 0.9) codec.headphone_select(0) codec.mute_headphone(False) codec.volume(0.7, 0.7) i2s.write(buf) # 将音频采样缓冲写入 I2S 设备Teensy 音频扩展板使用的 SGTL5000 编解码器对 RX 与 TX 共用 RX 信号。注意编解码器必须在 I2S 设备之后初始化——因为 SGTL5000 的 I2C 操作依赖 MCK 时钟而 MCK 由 I2S 控制器提供。实时时钟RTCfrom machine import RTC rtc RTC() rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # 设置日期时间如 2017/8/23 1:12:48 # 星期字段会被忽略 rtc.datetime() # 获取日期时间 rtc.now() # 以 CPython 格式返回日期时间电池备份i.MXRT MCU 支持 RTC 电池备份。连接 1.5–3.6V 电池后主电源断开时仍可维持日期时间。电池消耗电流约~20µA偏高一节 CR2032 纽扣电池大约可维持一年。版本说明从 v1.23.0 起移除了亚秒支持——读取 RTC 时亚秒字段恒返回 0设置 RTC 时间时亚秒字段被忽略RTC 本身不提供微秒值。RTC 的实现基于 NXP SDK 的 SNVS LP 域SNVS_LP_SRTC并支持基于该定时器的报警唤醒功能见 ports/mimxrt/machine_rtc.c。SD 卡machine.SDCard类提供 SD 卡访问配合vfs模块挂载为文件系统import machine, os, vfs sd machine.SDCard() fs vfs.VfsFat(sd) vfs.mount(fs, /sd) # 挂载 os.listdir(/sd) # 列出目录内容 vfs.umount(/sd) # 卸载重要限制基于i.MX RT 1011 和 1015的板卡如 MIMXRT1010_EVK、Makerdiary RT1011不支持machine.SDCard类此时应改用 MicroPython 驱动库中的 SPI 版sdcard.py驱动并自行控制 SPI 硬件模块的 CS 引脚import vfs, sdcard, machine cs_pin D10 spi machine.SPI(0) # SPI0CS 引脚 D10 用于 SD 卡 cs machine.Pin(cs_pin, machine.Pin.OUT, value1) sd sdcard.SDCard(spi, cs) fs vfs.VfsFat(sd) vfs.mount(fs, /sdcard)OneWire 驱动OneWire 驱动为软件实现可在所有引脚上工作from machine import Pin import onewire ow onewire.OneWire(Pin(D12)) # 在 GPIO12 上创建 OneWire 总线 ow.scan() # 返回总线上设备列表 ow.reset() # 复位总线 ow.readbyte() # 读取一个字节 ow.writebyte(0x12) # 写入一个字节 ow.write(123) # 写入多个字节 ow.select_rom(b12345678) # 按 ROM 码选择特定设备针对 DS18S20 / DS18B20 温度传感器有专用驱动import time, ds18x20 ds ds18x20.DS18X20(ow) roms ds.scan() ds.convert_temp() time.sleep_ms(750) for rom in roms: print(ds.read_temp(rom))务必在数据线上接 4.7kΩ 上拉电阻。注意每次采样温度前都必须调用一次convert_temp()。DHT 驱动DHT 驱动同样为软件实现可在所有引脚上工作import dht import machine d dht.DHT11(machine.Pin(D4)) d.measure() d.temperature() # 如 23 (°C) d.humidity() # 如 41 (% RH) d dht.DHT22(machine.Pin(D4)) d.measure() d.temperature() # 如 23.6 (°C) d.humidity() # 如 41.3 (% RH)数据线上需有4.7kΩ 上拉电阻部分 DHT 模块已内置。DHT 驱动的实现位于仓库 drivers/dht/dht.c。以太网驱动除基于MIMXRT1011的板卡和Teensy 4.0外所有 MIMXRT 板卡均支持以太网import network lan network.LAN(0) lan.active(True)若局域网内有 DHCP 服务器IP 地址由服务器分配否则可用lan.ipconfig(addr4...)手动设置默认地址为 192.168.0.1Teensy 4.1板上没有以太网插座但 PJRC 提供可自行组装的转接板Seeed ARCH MIX板上没有 PHY 硬件可外接 PHY 接口默认固件使用 LAN8720 PHY 驱动MIMXRT1170_EVK配备两个以太网口LAN(0)为 100M 口LAN(1)为 1G 口网络接口的完整细节参见network.LAN类文档。以太网功能由 ports/mimxrt/network_lan.c 与 ports/mimxrt/eth.c 实现lwIP 协议栈并通过 ports/mimxrt/mpconfigport.h 按板卡条件启用。Counter 类 —— i.MXRT 信号计数器machine.Counter类基于芯片的正交编码器/定时器QEM模块提供硬件信号计数服务from machine import Pin, Counter counter Counter(0, Pin(D0)) # 创建 Counter 对象 counter.value() # 获取当前计数值 counter.value(0) # 将计数清零 counter.init(max128) # 设置计数上限 counter.deinit() # 关闭 Counter counter.init(match1000) # 在计数值 1000 处创建匹配事件 counter.irq(handler, Counter.IRQ_MATCH) # 计数匹配时调用 handler 函数 counter # 查看 Counter 对象属性Counter 为硬件实现除基于 i.MX RT 1010 MCU 的板卡外所有 MIMXRT 器件均可用对应 modmachine.c 中MICROPY_PY_MACHINE_QECNT宏的条件注册逻辑。各板卡可用于 Counter/Encoder 的引脚见 docs/mimxrt/pinout.rst 的 Encoder/Counter 引脚分配章节如 MIMXRT1015_EVK 的 J30 第 1、3 脚名称为 ENC1/ENC2Teensy 4.x 的 D0–D33 等。Encoder 类 —— i.MXRT 正交编码器machine.Encoder类提供正交编码器服务用于读取旋转编码器如电机测速编码器产生的 A/B 相位脉冲from machine import Pin, Encoder qe Encoder(0, Pin(D0), Pin(D1)) # 创建正交编码器对象 qe.value() # 获取当前计数值 qe.value(0) # 将计数值清零 qe.init(max128) # 指定 128 个计数为上限 qe.init(indexPin(D3)) # 指定 Pin 3 为 Index 脉冲输入 qe.deinit() # 关闭正交编码器 qe.init(match64) # 在计数值 64 处设置匹配事件 qe.irq(handler, qe.IRQ_MATCH) # 匹配事件发生时调用 handler qe # 查看 Encoder 对象属性Encoder 同样为硬件实现除基于 i.MX RT 1010 MCU 的板卡外所有 MIMXRT 器件均可用。实现位于 ports/mimxrt/machine_encoder.c。传输文件到板卡向 i.MXRT 设备传输文件的方式mpremote工具官方命令行工具仓库位于 tools/mpremote支持文件复制、挂载、REPL 会话等是最推荐的方式SD 卡将文件放入 SD 卡后挂载访问见上文 SD 卡章节FTP若以太网可用可使用社区提供的 FTP 服务器方案其它社区方案如 rshell、Thonny 等。小结i.MXRT 移植版充分利用了 NXP i.MX RT 交叉 MCU 的硬件外设FLEXPWM/QTMR 提供了带互补输出、死区、同步、异或等高级特性的灵活 PWMQEM 模块提供了硬件计数器与正交编码器8 路 UART、4 路 SPI、4 路 I2C、I2S 与以太网控制器为各类应用提供了充足接口。配合通用性设计所有引脚均可用软件 SPI/SoftI2C/OneWire/DHT无论是电机控制、传感器采集、音频处理还是网络应用都可以在 Teensy、MIMXRT10xx-EVK 等板卡上快速落地。各外设的逐板引脚分配可随时查阅 docs/mimxrt/pinout.rst板卡技术规格与支持列表见 docs/mimxrt/general.rst。【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropython创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询