0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于tb6612芯片和红外避障模块的IO输出输入模式

电子设计 来源:mcu中文技术社区 作者:Vanilla.044 2021-02-14 06:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近一周多的时间开始学习并自己动手制作了一个循迹小车,主要运用的就是tb6612芯片以及红外避障模块,这篇博客主要就是总结一下在制作小车过程中学习到的知识以及问题。

一、有关IO输出输入的总结

在这次小车制作中,我使用到的有tb6612电机驱动芯片和MH-Sensor-Series红外循迹避障模块,两者的使用方法都不是很复杂,只需要在对应的引脚上接高低电平或者接输入引脚即可,但正是这么基础的引脚操作中也发现了很多小细节,有同学在制作小车的过程中就遇到了写完代码根本没达到预期效果,后来才发现是一些引脚的模式或者使能问题,因此我也更详细学习了一下IO口的八种输入输出模式。

下面就是我个人对这几种模式的理解

一、输入模式

1. 浮空输入(GPIO_Mode_IN_FLOATING)

该模式主要针对芯片本身,以及其他的逻辑器件(即由大量逻辑开关组成的元器件),在该模式下,引脚既不表现为高电平也不表现为低电平,如果用电压表测量测得的可能也有所不同。

浮空输入大多数情况就是代表该引脚什么都不接,但是在网上也有说可以用于ADC传输数据使用,但我并不了解。

这个模式基本用不上,如果以后我有使用会在这里记录。

2. 上拉输入(GPIO_Mode_IPU)

在上拉输入模式下,引脚什么都不接的情况下表现为高电平,当连接到TTL(高电平低电平)信号时,会发生改变。

在没有输入或者是输入为高电平时,其电压为高;输入为低电平时,电压为低。

这里要注意的是没有输入的时候就处于高电平,适用于那些平常状态输出高,特殊状态输出低的模块。

3. 下拉输入(GPIO_Mode_IPD)

和上拉输入类似

在下拉输入模式下,引脚什么都不接的情况下表现为低电平,当连接到TTL(高电平低电平)信号时,会发生改变。

在没有输入或者是输入为低电平时,其电压为低;输入为高电平时,电压为高。

这里要注意的是没有输入的时候就处于低电平,适用于那些平常状态输出低,特殊状态输出高的模块。

4. 模拟输入(GPIO_Mode_AIN)

模拟输入不同于以上三种输入模式,前面三种模式都是数字信号的输入也就是非高即低的信号,而模拟输入就是输入未经处理的信号,可以是一段连续的电压不固定的信号。

往往在数模转换中需要用到,比如读取某个引脚的电压值,这个电压值就可能是PWM波形,使用模拟输入就可以讲信号不经处理的传给ADC模块进行分析。

二、输出模式

1. 开漏输出(GPIO_Mode_Out_OD)

在开漏模式下,控制IO输出低时IO口输出低,控制IO口输出高时IO口既不输出高也不输出低,电压不确定。(由外部驱动,降低芯片的驱动压力)

在使用该模式时,通常外接一个电阻,通过这个电阻来给予高电平。“推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合”

或者在推挽输出模式下我们输出的电平是3.3V,但是我们想要达到一个5V的输出,就可以采用开漏输出,通过外接一个上拉电阻来控制我们的电压能够达到5V。

再或者可以用一个IO口进行双向的数据传输。

首先从引脚往外这个指向来说,引脚输出低时IO为低,引脚输出高时外部可以由上拉电阻将IO上拉为高。

其次从外往引脚这个指向来说,由于IO的高低电平与外部上拉电阻有关,也就可以通过外部上拉电阻的有无来 反向控制IO的高低,之后可以运用寄存器读取IO状态从而获得外部的电平信号。这样就可以达到IO口的双向功能。(仅个人理解)

上拉电阻的阻值不仅影响输出的电平高低,还影响着信号的延迟,阻值越大信号也就越延迟但是功耗小。

2. 推挽输出(GPIO_Mode_Out_PP)

引脚输出低时IO为低,引脚输出高时IO输出高。

3. 推挽复用输出(GPIO_Mode_AF_PP)

可以使用IO口的第二功能,例如定时器、串口等。相当于是输出信号更多样的推挽输出。

输出PWM信号时需要使用该输出模式。

4. 开漏复用输出(GPIO_Mode_AF_OD)

可以使用IO口的第二功能,例如定时器、串口等。相当于是输出信号更多样的开漏输出。

二、PWM输出的一些总结

1.引脚与定时器和通道的对应关系

o4YBAF_9Y0CAP3JgAAFV6yeQ398380.png

o4YBAF_9Y0iAS0dBAAGa-aBL_JQ705.png

STM32的定时器除了定时器6和定时器7都可以用来产生PWM,定时器1和定时器8是高级定时器,都可可以同时产生7路PWM,需要注意的是在配置高级定时器时需要多加这样的一行代码。

TIM_CtrlPWMOutputs(TIM1,ENABLE);

这一行代码可以追根源头发现是控制的是 刹车和死区寄存器(TIMx_BDTR)

2. 一些结构体成员的介绍

①TIM_OCInitStructure.TIM_OCMode
该元素设置的是PWM的模式,可以指定两种模式

TIM_OCMode_PWM1
在向上计数时,一旦装载值小于占空比时通道为无效电平,否则为有效电平
在向下计数时,一旦装载值大于占空比时通道为有效电平,否则为无效电平。

TIM_OCMode_PWM2
向上计数时,一旦装载值小于占空比时通道1为有效电平,否则为无效电平
向下计数时,一旦转载值大于占空比时通道1为无效电平,否则为有效电平。

②PWM初始化函数的两个入口参数
TIM_TimeBaseStructure.TIM_Period
该元素设置的是计数值,通常是PWM初始化函数的第一个入口参数arr,这个值影响一次PWM周期的时间长短。

TIM_TimeBaseStructure.TIM_Prescaler
该元素设置的是预分频值,通常是PWM初始化函数的第二个入口参数psc,这个值也影响一次PWM周期的时间长短。

由公式

Fpwm = TCLK / ((arr+1)*(psc+1)) (单位:Hz)

可计算一次PWM的周期时长

其中TCLK的具体频率可以到时钟树中查找,不同定时器的最高频率是不同的
TIM1、TIM8、TIM15、TIM16、TIM17、TIM9、TIM10、TIM11属APB2总线,最高频率为72M
TIM2、TIM3、TIM4、TIM5、TIM6、TIM7、TIM12、TIM13、TIM14属APB1总线,最高频率为36M
具体可以查数据手册

③TIM_TimeBaseStructure.TIM_CounterMode
该元素设置的是PWM的计数模式,常用的有以下两种。

TIM_CounterMode_Up
向上计数

TIM_CounterMode_Down
向下计数

还有几种不常用的

pIYBAF_9Y1qAJ96-AAC-_Go2MUk956.png

④TIM_OCInitStructure.TIM_OCPolarity
该元素设置输出极性,这个元素要配合PWM模式来说,在PWM模式中有无效电平和有效电平的区别,而具体的有效电平是什么呢?

就是在这个元素设置的,这里的元素如果设置成为TIM_OCPolarity_High则有效电平就是高电平,如果元素设置为TIM_OCPolarity_Low,则有效电平就是低电平。

总结

这篇博客主要介绍了一些输入输出函数的小细节,以及PWM的一些重要结构体元素代表什么。
输入输出与PWM可以说是STM32的基础操作,只有加强对基础的了解才可能在后面的学习中更加顺利。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5589

    浏览量

    129069
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5847

    浏览量

    223823
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371175
  • 电机驱动
    +关注

    关注

    60

    文章

    1375

    浏览量

    89088
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121750
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IO口8种工作模式和应用

    芯片设计中,IO口(输入/输出端口)是微控制器(MCU)或处理器与外部设备交互的关键接口。IO口的工作
    发表于 11-14 06:46

    【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波、远程控制、星闪/红外遥控)有教程代码

    很多物联网学习者总觉得“学了用不上”:单独会接传感器、懂点通信协议,可一到“多模块协同”就慌了——不知道怎么让超声波模块的测距数据通过星闪传出去,也没试过用小程序远程控制小车。而这
    的头像 发表于 09-10 16:01 683次阅读
    【项目实战】基于WS63的鸿蒙星闪<b class='flag-5'>红外</b>遥控车(循迹、超声波<b class='flag-5'>避</b><b class='flag-5'>障</b>、远程控制、星闪/<b class='flag-5'>红外</b>遥控)有教程代码

    【项目实战】基于STM32F103的智能小车(远程控制、超声波、循迹、红外遥控)有教程代码

    在嵌入式开发学习中,实战项目是将理论转化为能力的最佳载体——本次【项目实战】聚焦基于STM32的智能小车,不仅整合了红外遥控、微信小程序远程物联控制、自适应巡线、动态系统、交互式显示屏五大
    的头像 发表于 09-08 16:06 1174次阅读
    【项目实战】基于STM32F103的智能小车(远程控制、超声波<b class='flag-5'>避</b><b class='flag-5'>障</b>、循迹、<b class='flag-5'>红外</b>遥控)有教程代码

    盘点割草机器人六大传感器

    电子发烧友网综合报道 割草机器人的技术是其智能化水平的核心体现,主要通过传感器技术、环境感知算法和路径规划方法实现安全、高效的自主作业。随着智能化水平提升,割草机器人正从单一传
    的头像 发表于 08-17 00:03 3792次阅读

    干货分享 | TSMaster IO功能使用指南—基于同星带IO设备的配置与操作步骤

    IO模块是一种用于连接计算机系统或控制系统与外部设备之间的接口模块。数字IO模块用于处理二进制信号的输入
    的头像 发表于 08-09 20:04 713次阅读
    干货分享 | TSMaster <b class='flag-5'>IO</b>功能使用指南—基于同星带<b class='flag-5'>IO</b>设备的配置与操作步骤

    INDEMIND三目AI-脏污检测模组,扫地机器人的“全能副手”

    新一代视觉模组
    的头像 发表于 08-08 15:54 613次阅读

    TB6612FNG原理数据手册

    电子发烧友网站提供《TB6612FNG原理数据手册.pdf》资料免费下载
    发表于 08-04 14:57 3次下载

    一个模块通吃DI/DO/AI/AO!无线IO的万能信号采集方案

    无线IO通讯模块是一种特殊的输入输出(I/O)设备,它采用无线通讯技术实现I/O信号的传输。以下是对无线IO通讯模块的详细介绍: 一、定义与
    的头像 发表于 07-22 10:15 389次阅读
    一个<b class='flag-5'>模块</b>通吃DI/DO/AI/AO!无线<b class='flag-5'>IO</b>的万能信号采集方案

    锐驰智光推出微型化区域激光雷达KoraBeam 1E

    今天,锐驰智光正式发布一款微型化区域激光雷达—KoraBeam 1E。
    的头像 发表于 07-15 18:10 941次阅读

    工程师必存!IO模块十大坑指南

    甚至安全事故。本文将整理常见的 IO 模块选型错误,通过 “事故案例 + 解决方案” 的形式,为工程师们提供一份实用的坑指南。​ 一、忽略抗干扰设计​ 事故案例​ 某大型工厂的自动化生产线中,工程师在选型
    的头像 发表于 06-26 12:06 702次阅读
    工程师必存!<b class='flag-5'>IO</b><b class='flag-5'>模块</b>十大<b class='flag-5'>避</b>坑指南

    也能预判?视觉黑科技让扫地机器人开启“先知”模式

    从被动到主动预判,视觉技术比预想的更快实现。
    的头像 发表于 06-18 14:09 830次阅读

    肇观电子两款无人机视觉模组量产交付

    在无人机的世界里,视觉不仅定义了飞行的边界,更是智能决策的核心。肇观电子以其突破性的AI视觉芯片,赋予无人机前所未有的感知与认知能力。 基于肇观自研芯片的两款无人机视觉模组:无
    的头像 发表于 05-06 15:11 1363次阅读

    【CW32模块使用】TB6612电机驱动模块

    模块相对于传统的L298N效率上提高很多,体积上也大幅度减少,在额定范围内,芯片基本不发热,当然也就显得更加娇贵,所以我们建议有一定动手能力的朋友使用,接线的时候务必细心细心再细心,注意正负极性。
    的头像 发表于 03-29 17:21 1184次阅读
    【CW32<b class='flag-5'>模块</b>使用】<b class='flag-5'>TB6612</b>电机驱动<b class='flag-5'>模块</b>

    INDEMIND:AI视觉赋能服务机器人,“零”碰撞技术实现全天候安全

    突破传统局限,视觉方案为服务机器人拉满安全感。
    的头像 发表于 02-21 16:27 702次阅读
    INDEMIND:AI视觉赋能服务机器人,“零”碰撞<b class='flag-5'>避</b><b class='flag-5'>障</b>技术实现全天候安全

    远程IO模块怎么用

    在工业自动化和物联网(IoT)领域,远程IO(输入/输出)采集模块扮演着至关重要的角色,允许系统远程监控和控制各种设备状态,从而实现更高效、灵活的数据采集和控制流程。 远程
    的头像 发表于 01-21 16:55 1143次阅读