开关矩阵(SWM)和 AM824-Core的应用
周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的"核心域",改变自己的编程思维,实现企业和个人的共同进步。经周立功教授授权,即日起,致远电子公众号将对该书内容进行连载,愿共勉之。
第一章为AM824-Core 开发套件,本文为 1.3 开关矩阵(SWM)和1.4 AM824-Core。
1.3 开关矩阵(SWM)
>>> 1.3.1 SWM 简介
如图1.4 所示的开关矩阵(Switch Matrix)是NXP 公司新推出的在MCU 中集成的一个非常有特色的外设功能,通过开关矩阵可以将芯片内部所有数字外设功能引脚分配到除电源、地之外的任意引脚,从而提高了设计的灵活性。
图1.4 SWM 功能示意图
由于开关矩阵的存在,因此可以将LPC824 的外设功能引脚信号分为固定功能信号和可分配数字信号,其对应的外设功能如下:
-
固定功能信号
GPIOx 、RESET、VDDCMP、ACMP_I1~ACMP_I4 、ADC_0~ADC_11、SWDIO、SWCLK、XTALIN、XTALOUT、CLKIN,以及标准I2C 开漏引脚I2C0_SDA 和I2C0_SCL,这些功能引脚都是固定在芯片外部某个管脚位置,不能通过 SWM 分配到其它外部管脚。
-
可分配数字信号
USART0、USART1、USART2、SPI0、SPI1、CTIN、CTOUT、I2C1、I2C2、I2C3、ACMP_O、CLKOUT,这些信号可以通过 SWM 分配到除电源/地以外的任意外部管脚。
>>> 1.3.2 SWM 应用
由于MCU 的部分数字外设可以根据需要分配到芯片其它引脚,因此将大大简化用户的设计。即:
(1)系统硬件设计时,以外围器件布局及PCB 布线为主导,不用考虑信号的管脚位置,帮助缓解PCB 走线拥挤,降低开发成本;
(2)更换系统外围器件或主控制器时,避免更改硬件设计,降低维护成本;
(3)分配多个功能到同一个引脚实现特殊功能(谨慎使用)。
下面我们以实际应用中几个小案例来实际体验一下SWM 的特点。
1. 解决硬件设计错误
用户电路设计过程中,经常会出现一些意外的错误,比如串口主机和设备的TXD 引脚对应连接(实际应交叉连接),导致PCB 需要重新设计,增加产品的设计成本,如果主控制器支持SWM 功能,即便PCB 设计错误,也可以在不修改硬件的前提下保证功能正常。
图1.5 解决硬件设计错误问题
如图1.5(a)所示是MCU 驱动SPI Flash 的应用电路,但是可以发现此电路设计错误,SPI Flash 的MOSI/MISO 引脚和MCU 对应引脚应该直接相连,而实际电路中采用交叉连接,因此该电路无法直接使用。如果图1.5(a)中的MCU 是LPC824,则可以灵活的通过SWM来实现SPI 外设引脚功能信号的重新分配,不用重新设计硬件而解决问题,详见图1.5(b)。
2. 简化外围设计
系统应用中不同电压信号的通信问题是经常遇到的,比较常见的是3.3V 系统和5V 系统兼容问题,例如3.3V 系统产品通过串口和5V 系统产品通信,就要求TXD 和RXD 引脚之间经过电平转换才能可靠通信。
LPC824 的电源供电范围是1.8 V~3.6 V,通常工作在3.3V 电源环境中,如果使用LPC824 为核心的产品需要支持5V 串口通信,则LPC824 的串口通信接口TXD 和RXD 均需要经过处理才能与外部5V 系统相连接,这部分电路可以通过多个分立器件或者电平转换芯片完成电平转换,这样既增加了设计复杂性又增加设计成本。但是LPC824 的第8、第9 引脚是标准开漏结构的引脚(默认I2C0 的I2C0_SDA 和I2C0_SCL 引脚分配在该引脚),实际应用中可以通过SWM 将UART 的TXD 和RXD 分配到这两个引脚位置上,通过外接上拉电阻到5V 电源直接实现5V 电平的兼容,可以很好地简化外围设计实现相应功能,详见图1.6。
图1.6 SWM 的灵活应用
1.4 AM824-Core
AM824 开发套件包括AM824-Core 和MiniCK100 仿真器,如图1.7 所示为AM824-Core的示意图,MCU 为NXP 半导体的LPC824M201JHI33,包括2 个MiniPort 接口、1 个MicroPort接口和1 个2×10 扩展接口。这些接口不仅将MCU 的所有I/O 资源引出,还可以借助MiniPort 接口和icroPort 接口外扩多种模块。片上资源包括2 个LED 发光二极管、1 个无源蜂鸣器、1 个加热电阻、1个LM75B 测温芯片、1 个热敏电阻、1 个TL431 基准源、1个多功能独立按键和1 个复位按键,可以完成多种基础实验。
图1.7 AM824-Core 开发板接口分布
AM824-Core 的出现简化了用户的硬件设计,使得学习LPC824 系列MCU 的难度大大降低,可以帮助初学者快速掌握基于32 位Cortex™-M0+内核微控制
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)