​UART接口的实现(中断)

1.主要内容:

1.基本功能的实现:串口的基本收发

2.串口的中断实现:通过控制寄存器

3.简易PC与FPGA串口通讯的架构

2.实验中用到的器件

AC7100B(核心板型号,下同)核心板,是基于 XILINX 公司的 ARTIX-7 系列 100T的 XC7A100T-2FGG484I 这款芯片开发的高性能核心板,具有高速,高带宽,高容量等特点,适合高速数据通信,视频图像处理,高速数据采集等方面使用。vivado版本2018.3
 

3.基本理论

串 口 指 异 步 串 行 通 信 , 异 步 串 行 是 指 UART ( Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。 UART 是一个并行输入成为串行输出的芯片,通常集成在主板上。 UART 包含 TTL 电平的串口和 RS232 电平的串口。 TTL 电平是 3.3V 的,而 RS232 是负逻辑电平,它定义+5~+12V 为低电平,而-12~-5V 为高电平, MDS2710、 MDS SD4、 EL805 等是RS232 接口, EL806 有 TTL 接口。

串行接口按电气标准及协议来分包括 RS-232-C、 RS-422、 RS485 等。 RS-232-C、 RS-422 与 RS- 485 标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

异步串口通信协议
消息帧从一个低位起始位开始,后面是 7 个或 8 个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验, UART 就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中, UART 从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。 UART 传输时序如下图所示:

串口波形图

 从波形上可以看出起始位是低电平,停止位和空闲位都是高电平,也就是说没有数据传输时是高电平,当一个下降沿事件发生时,我们认为将进行一次数据传输。

常见的串口通信波特率有 2400 、 9600、 115200 等,发送和接收波特率必须保持一致才能正确通信。波特率是指 1 秒最大传输的数据位数,包括起始位、数据位、校验位、停止位。 假如通信波特率设定为 9600,那么一个数据位的时间长度是 1/9600 秒。
 

4.uartliteIP核GUI

提供官方的IP核操作下载地址:AMD Technical Information Portal

IP核详解:

特征:

用于寄存器访问和数据传输的AXI-LITE接口

全双工

16字符发送和接收的fifo

一个字符中可配置的数据位数(5-8)

可配置的奇偶校验位数

可配置波特率

功能摘要

接口信号

AXI_UARTLITE接口信号
signal nameinterfacei/oinitial statedescription
system signal
s_axi_aclksystemi-总线时钟
s_axi_aresetnsystemi-复位,低电平有效
interruptsystemoo上升沿UART中断
AXI channel Signals
s_axiS_AXI--
RXUART_LITEI-
TXUART_LITEO0X1

备注:

寄存器地址映射

5.创建工程

打开vivado,建立BD工程,如图:

生成bitstream,打开SDK,编写C代码驱动程序。

6.实现代码:

1.确保硬件线路是通的,先用例程代码做个收发测试,打印一个hello。

2.找到自己的板级支持包,查询下打印数据的接口,有的ZYNQ相关的硬件会默认PCMU输出,这个点成UARTlite

3.接下来写驱动,不知道怎么写的就直接用例程看下用到啥

这里打开了其中一个low_level的,主要发送和接收函数是这个

4.随便写了点代码测试了一下

发送状态:hello FPGA

接收状态01-06接收数据。

7.UART中断

上述的表示接收与发送都OK了,硬件线路是OK的,然后搞中断。

所谓中断就是CPU在干什么事情的时候,达到某一个触发条件,然后执行触发条件需要的操作。

在上述架构的基础上,把中断链接到系统中断,然后重新生成bit流,创建SDK,编写驱动。

代码流程为:

具体参考代码:

8.实现效果

输入FF5505010203040A,得到最终版本信息。输出打印

IoT设备设计方案 一、系统架构 系统以 L P C 1768 LPC1768微控制器为核心,集成传感器、通信、存储模块,采用双电源输入(12V DC + USB-C 5V)设计,架构如下: 系统架构 = L P C 1768 + M M A 7660 + G P S + 4 G + S D 卡 + 电源管理 系统架构=LPC1768+MMA7660+GPS+4G+SD卡+电源管理 二、电气原理图设计要点 电源管理 12V输入通过 T P S 54331 TPS54331降压至5V(最大3A输出) USB-C接口直连5V输入 使用 T P S 73633 TPS73633将5V转为3.3V(LPC1768工作电压) 添加电源路径管理芯片 L T C 4412 LTC4412实现双电源自动切换1 主控接口 Plaintext LPC1768引脚分配: P0.0-P0.1 → MMA7660(I2C) P0.2-P0.3 → GPS(UART0) P0.10-P0.11 → 4G模块(UART1) P0.15-P0.18 → SD卡(SPI) P2.0-P2.3 → 状态指示灯 传感器电路 MMA7660典型连接电路: V D D → 3.3 V , S D A → 10 k Ω 上拉 , S C L → 10 k Ω 上拉 , G N D → 铺地 V DD →3.3V,SDA→10kΩ上拉,SCL→10kΩ上拉,GND→铺地 通信模块 GPS模块选用 N E O − 6 M NEO−6M,配置 32.768 k H z 32.768kHz备用时钟 4G模块采用 S I M 7600 C E SIM7600CE,需独立供电电路: V 4 G = 3.4 V − 4.2 V , I m a x = 2 A V 4G =3.4V−4.2V,I max =2A 三、关键电路设计 USB-C PD接口 Python # 简化供电检测逻辑 if CC1/CC2电压 == 0.2V: 选择USB供电 else: 保持12V供电 数据存储方案 使用 W 25 Q 128 W25Q128 SPI Flash(128Mbit) 文件系统采用FAT32格式 添加写保护电路: V W P = 3.3 V → 允许写入 , V W P = 0 V → 写保护 V WP =3.3V→允许写入,V WP =0V→写保护 四、物料清单(BOM) 类别 型号 参数 数量 主控 LPC1768FBD100 Cortex-M3, 100MHz 1 加速度计 MMA7660FCR1 ±1.5g, I2C 1 GPS模块 NEO-6M-0-001 56通道 1 4G模块 SIM7600CE-T LTE Cat4 1 存储 W25Q128JVSIM 128Mbit SPI Flash 1 电源管理 TPS54331DRBR 3A DC-DC 2 USB连接器 USB4105-GF-A USB-C 24pin 1 五、设计注意事项 为4G模块保留 100 × 40 m m 100×40mm的净空区域 GPS天线阻抗匹配需控制 50 Ω ± 5 50Ω±5 在12V输入端添加 S M B J 12 C A SMBJ12CA TVS管防护2 加速度计建议采样率配置为120Hz(寄存器0x07=0x59) —— END ——根据这个信息,帮我把电气原理图画出来,具体到管脚怎么接线。
03-16
<think>嗯,用户需要LPC1768核心的IoT设备的电气原理图和接线方式,涉及多个模块。首先,我得确认每个模块的典型应用电路和与LPC1768的连接方式。 电源管理部分有三个芯片:TPS54331、TPS73633和LTC4412。TPS54331是DC-DC降压,输入电压范围要确定,比如7-28V,输出3.3V。需要参考数据手册中的典型电路,反馈电阻的配置,以及电感、电容的选择。TPS73633是LDO,输入3.3V转1.8V给内核,接线应该简单,但要注意输入输出电容。LTC4412是电源切换,需要处理主电源和备用电源的切换逻辑,控制引脚可能连接到MCU的GPIO。 接下来是传感器和外设模块。MMA7660加速度计是I2C接口,需要确认地址和上拉电阻。NEO-6M GPS模块通常用UART,注意TX/RX交叉连接,以及VCC的电压是否匹配。SIM7600CE 4G模块可能也需要UART,但可能有多个串口,同时控制引脚如PWR_KEY需要连接到MCU的GPIO,并且电压转换可能需要电平移位器。 SD卡接口有两种模式:SPI和SDIO。用户可能使用SPI模式,需要确认CLK、MISO、MOSI、CS的引脚连接,加上上拉电阻。W25Q128是SPI Flash,同样需要连接SPI总线,注意CS引脚的选择和上拉。 用户可能需要具体的引脚分配,比如LPC1768的P0.2作为I2C SDA,P0.0作为UART TX等。同时,电源部分的布局和滤波电容的位置也很重要,要避免噪声干扰。另外,各模块的接地要统一,确保共地。 还要考虑PCB布局,比如高频模块(如SIM7600CE)的走线要短,电源模块的散热处理。可能用户在实际应用中会遇到信号干扰或电源不稳的问题,需要建议添加滤波和稳压措施。 最后,生成相关问题时要覆盖电源设计、外设驱动开发、PCB布局、低功耗优化、数据存储方案和通信模块选择等方面,帮助用户全面了解设计中的关键点。</think>### LPC1768核心IoT设备模块接线详解 ### 一、电源管理模块 1. **TPS54331(3.3V主电源)** - 输入:7-28V直流,通过$C_{in}=10μF$滤波电容接入VIN引脚 - 输出:配置$R_{top}=10kΩ$/$R_{bot}=3.24kΩ$实现3.3V输出 - 接线:$$ \text{SW} \rightarrow 4.7μH电感 \rightarrow \text{OUT} $$[^1] 2. **TPS73633(1.8V内核电源)** - 输入直接连接TPS54331的3.3V输出 - EN引脚接高电平,$C_{out}=10μF$钽电容 3. **LTC4412(电源切换)** - 主电源路径:$\text{VIN} \rightarrow \text{D1} \rightarrow \text{OUT}$ - 备用电源:电池通过100Ω电阻接入$\text{VBAT}$ ### 二、传感器接口 1. **MMA7660加速度计** ```c // I2C配置(LPC1768 P0.2=SDA, P0.1=SCL) I2C_Init(LPC_I2C0, 100000); ``` - 硬件连接:ALERT→P2.0(中断引脚) 2. **NEO-6M GPS** - UART1接线: $$ \text{TX(P0.15)} \leftrightarrow \text{RX} $$ $$ \text{RX(P0.16)} \leftrightarrow \text{TX} $$ - PPS信号接P2.1 ### 三、通信模块 **SIM7600CE 4G模块** - 主控制接口: ```c #define POWER_KEY P2_5 // 开机控制引脚 #define STATUS_LED P2_6 // 网络状态指示 ``` - UART2波特率配置115200 ### 四、存储模块 1. **SD卡接口** ```c // SPI模式(SSP0) SSP_Init(LPC_SSP0); ``` - 引脚分配: $$ \text{CLK}=P0.15,\ \text{MISO}=P0.17,\ \text{MOSI}=P0.18 $$ 2. **W25Q128 Flash** - SPI片选信号接P0.20 - WP/HOLD引脚接3.3V ### 五、系统集成要点 1. 电源轨隔离:数字/模拟电源间加装10Ω磁珠 2. 信号完整性:所有高速信号线走等长蛇形线 3. ESD防护:所有外接端口添加TVS二极管阵列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花间ii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值