当前位置: 首页 > news >正文

day48-硬件学习之GPT定时器、UART及I2C

一、GPT定时器(通用目的定时器)

1.1 GPT的特性

  1. 一个可选时钟源的 32 位向上计数器。
  2. 两个输入捕获通道,可以设置触发方式。
  3. 三个输出比较通道,可以设置输出模式。
  4. 可以生成捕获中断、比较中断和溢出中断。
  5. 计数器可以运行在重新启动(restart)或(自由运行)free-run 模式。

1.2 时钟源选择

时钟有5种选择,选择时钟后再进行分频。

  1. 直接用24M晶振
  2. 外部时钟GPT_CLK
  3. 外围时钟
  4. 低频基准时钟
  5. 高频基准时钟

GPTx_IR寄存器介绍
该寄存器用于对回滚中断、输入捕获中断、输出比较中断进行使能和失能的配置。(详见参考手册P1236)。

GPTx_OCRx寄存器介绍
用来配置输出比较寄存器的值,大小为0~2^32-1。

GPTx_ICRx寄存器介绍
用来存放输入捕获到的值,该寄存器的只有可读权限。

GPTx_CNT寄存器介绍
主计数器的寄存器。GPT_CNT是一个只读寄存器,可以读取而不影响GPT的计数过程。

二、UART

IMX中设置了FIFO缓冲区,提高CPU的执行效率;

相关寄存器:

2.1 实验目标:使用115200,n,8,1来实现UART

uart.c:


uart.h

2.2 移植库

步骤: 

  1. 获取源码
  2. 进行适配(将源码与本机相匹配);

 三、I2C

        I2C(内部集成电路总线):同步串行半双工通信;(通常用于芯片与芯片之间)

        对于硬件设置上,为了保证双方在释放总线时,能呈现高电平,需在每根线上(SCL,SDA)接上拉电阻,上拉电阻阻值为4.7K~10K

  1. 同步串行半双工通信总线方式;
  2. 用于芯片与芯片之间;
  3. 通信方式:

时钟信号由主机提供;

I2C采用MSB(高位先行原则) ;

I2C规定时钟信号为低电平时,发送方可以修改SDA;但高电平时,不可修改SDA,是接收方采用时间;

在时钟信号线为高电平时,主机将电平由低电平拉向高电平,发送停止位,结束通信;

步骤:

(1)发送方发一个起始信号(在SCL为高电平时,SDA发送一个低电平);

(2)传输数据,根据高位先行原则(MSB)且在低电平时,发送方可以修改SDA,高电平时不可以修改SDA,是接收方接收的时间;

(3)发送完一个字节后,等待接收方应答信号,若为低电平,则表示已接收(ACK),反之为NACK

(4)在SCL为高电平时,发送方将SDA拉高,结束通信


 

主机写:

        先发送起始位,传输设备地址和数据流向位,数据流向位为低电平(表示主机向从机发送信息),接受从机应答(ACK)后,发送数据存放地址,从机应答,发送数据内容,发送完毕,从机发送应答,主机在时钟信号线为高电平时,将数据线由低电平拉向高电平,结束发送。

主机读:

        主机发送起始位,发送从机地址与数据流向位为写,从机应答;发送数据存放地址,从机应答后;重新发送起始位,发送从机地址与数据流向位为读,从机应答;从机发送数据,主机发送应答信号;当数据读取完后,主机发送NACK,并将电平拉高,结束读取。

http://www.lryc.cn/news/575733.html

相关文章:

  • 面试150 判断子序列
  • 【已解决】Android Studio gradle遇到unresolved reference错误
  • 鸿蒙 SplitLayout 组件解析:折叠屏分割布局与多端适配指南
  • 视频关键帧提取
  • 跟着AI学习C#之项目实战-电商平台 Day1
  • Python打卡:Day36
  • mac电脑安装vscode的力扣插件报错解决办法
  • 板凳-------Mysql cookbook学习 (十--11)
  • Spring Boot高并发 锁的使用方法
  • Flutter 多平台项目开发指南
  • 使用java语言,计算202503291434距离当前时间,是否大于三天
  • SQL SERVER存储过程
  • 赋能 Java 工程,飞算科技重新定义智能开发
  • 自动化测试--app自动化测试之给手机设置锁屏图案
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • httpClient连接配置超时时间该设置多长才合适?
  • 从提示工程(Prompt Engineering)到上下文工程(Context Engineering)
  • 【RabbitMQ】多系统下的安装配置与编码使用(python)
  • 深入解析Python多服务器监控告警系统:从原理到生产部署
  • Linux IPV4/IPV6配置终极指南
  • 解锁AI无限潜能!景联文科技数据产品矩阵再升级:多语言题库、海量语料、垂域代码库,全面赋能大模型训练
  • java解决超大二维矩阵数组引起的内存占用过大问题
  • 【redis使用场景——缓存——数据过期策略 】
  • 新手向:Neo4j的安装与使用
  • CTF:PHP 多关卡绕过挑战
  • Flink部署与应用——Flink架构概览
  • 国外开源客服系统chathoot部署,使用教程
  • 信息化系统流程管理模块,企业高价值资产的跨省/市运输审批流程的功能
  • 网络安全之SQL RCE漏洞
  • AI 口语陪练:教育领域的新变革​