tag 标签: MCU原理

相关博文
  • 热度 4
    2023-12-9 10:58
    670 次阅读|
    0 个评论
    谢谢兆易创新高工、芯片综合服务商映时科技。谢谢面包板论坛。 感谢 机械工业出版社。 感谢提供的这一次试读机会。 感谢 映时科技 董晓 任保宏 。 接上九篇: 《GD32 MCU原理及固件库开发指南》+试读心得(1) 《GD32 MCU原理及固件库开发指南》+试读心得(2)第八章 《GD32 MCU原理及固件库开发指南》+试读心得第一章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第一章(2) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(2) 《GD32 MCU原理及固件库开发指南》+第三章试读心得 《GD32 MCU原理及固件库开发指南》+第四章试读心得 《GD32 MCU原理及固件库开发指南》+第五章MCU基础外设 《GD32 MCU原理及固件库开发指南》+第六章模拟外设 在阅读《GD32 MCU原理及固件库开发指南》之后,我深感嵌入式系统中的串口通信不仅是一门技术,更是一种艺术。在微控制器的世界里,串口通信作为一种通用的通信接口,为设备间的数据交换提供了可能。而GD32F303的USART(Universal Synchronous/Asynchronous Receiver Transmitter)模块更是将这种可能性推向了新的高度。 首先,通过使用printf函数进行实例讲解,我了解到了USART的半双工通信模式、DMA通信模式、同步模式、接收超时、中断方式收发等特性。这不仅让我对USART有了更深入的理解,也让我明白了在硬件系统中,如何灵活、有效地利用这些特性来实现数据通信。 然后,通过构建一个串口命令行,我体验到了使用串口进行程序调试的便捷性。相对于传统的JTAG或SWD接口,串口命令行无疑提供了更大的灵活性,使得我们可以在任何时间、任何地点对程序进行调试。更为重要的是,这个串口命令行经过了实际工程的验证,占用资源少,易于移植到其他MCU,甚至是资源更为紧张的8位微控制器上。 让我们继续用幽默的方式讲解这些通信模式。 1. USART的半双工通信模式 半双工通信模式就像是在一个嘈杂的餐厅里与邻桌人交谈。你们只能通过一个人讲话,另一个人倾听来交流。如果你试图同时说话,那么你们将无法听清对方的话。这就像是在争夺话语权,而最后只会变成一场嘈杂的混乱。 2. DMA通信模式 DMA通信模式就像一个非常专业的侍者。你可以告诉侍者你要什么,然后他会为你送到餐桌上,而你则可以继续享受你的晚餐。你不必亲自去取食物,侍者会帮你完成一切。这样,你可以专注于更重要的事情,比如品尝美食。 3. 同步模式 同步模式就像是一场精心编排的舞蹈表演。每个舞者都必须按照相同的节奏和步伐跳舞,以确保整个表演的协调性和完美性。如果有人跳错了步伐,那么整个表演就会受到影响。因此,在同步通信中,每个设备都必须按照相同的速度和顺序发送和接收数据,以确保数据的准确性和一致性。 4. 接收超时 接收超时就像是在等待一个迟到的朋友。你等了很长时间,但是他还是没有出现。最后,你决定离开并做其他事情。这就是接收超时的情况,如果设备在特定的时间内没有接收到数据,它就会放弃等待并返回一个错误。这就像是在告诉朋友:“我不能再等你了,我要去做其他事情了。” 5. 中断方式收发 中断方式收发就像是在打瞌睡时被突然的电话铃声吵醒。你正在做美梦,但是电话响了,你必须立刻醒来接电话。同样地,当设备需要发送或接收数据时,它会发出一个中断信号,让CPU停止当前的工作并处理数据。这就像是在说:“喂!喂!快醒醒!有重要的事情要做!”这样,CPU可以高效地处理数据,而不会错过任何重要的信息。 希望这些更幽默的讲解方式能够帮助你更好地理解这些通信模式! 使用串口命令行来调试程序比使用JTAG或者SWD接口要更加灵活。 首先,让我们来了解一下这些高大上的名词都是啥意思。JTAG和SWD接口是我们在硬件调试中常用的两种接口,可以帮助我们更加方便地调试嵌入式系统等硬件设备。而串口命令行则是一种通过串口通信来进行调试的方式。 好了,科普完毕,接下来让我们进入正题。 使用JTAG或者SWD接口调试程序,就像是通过一个高级餐厅的旋转门进入餐厅一样,虽然看起来高端大气上档次,但是实际上却有很多限制。比如你只能按照规定的方向进入或退出,而且还必须慢慢地推门,否则门就会卡住。 而使用串口命令行调试程序则像是通过一个街头小摊的摊位门进入市场一样,虽然看起来比较简陋,但是却非常灵活。你可以随时随地进出,而且还可以自由地控制门的开关速度,非常方便。 另外,使用串口命令行还有一个好处就是可以实现远程调试。你可以在家里通过电脑连接到一个远程的串口服务器上,就可以对远在千里之外的程序进行调试了。这就像是你在家里通过手机APP控制智能家居一样,非常便捷。 综上所述,使用串口命令行来调试程序比使用JTAG或者SWD接口要更加灵活,不仅可以实现远程调试,而且还非常便捷。当然,如果你要装X的话,还是可以使用JTAG或SWD接口来调试程序的,毕竟旋转门看起来还是比较高端的。 JTAG和SWD都是用于硬件调试的接口,以下是它们的一些主要区别: 1. 定义:JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试。而SWD(Serial Wire Debug)则是一种串行调试接口,采用不同的调试协议。 2. 引脚数量:标准的JTAG接口是4线的,包括TMS、TCLK、TDI、TDO,分别是模式选择、时钟、数据输入线和数据输出线。一般再加上VCC和GND,因此共有6个引脚。而SWD只需要4个引脚,SW_CLK、SW_SDIO、NREST、VDD,所以结构简单。 3. 使用范围:JTAG接口的使用范围比SWD广泛。JTAG可以深入芯片内部进行测试,而SWD主要用于调试。 4. 速度和可靠性:在高速模式和大数据量的情况下,SWD模式比JTAG更加可靠。JTAG下载程序可能会失败,但是SWD发生错误的概率会小很多。基本使用JTAG仿真模式的情况下都可以直接使用SWD模式,只要仿真器支持。 5. 引脚需求:当GPIO刚好缺一个的时候,可以使用SWD仿真,这种模式支持更少的引脚。在板子的体积有限的时候推荐使用SWD模式,它需要的引脚少,当然需要的PCB空间就小。 在嵌入式系统的通信方式中,I2C和SPI是最为常见和重要的两种。从基础知识到实际应用,我收获颇丰。 7.2节中,我了解了I2C接口的背景知识和特点。I2C接口是一种简单、灵活的通信协议,广泛应用于微控制器和其他设备之间的通信。通过学习GD32F303的I2C外设及其相关API,我深入理解了I2C主从通信方式,包括查询方式、DMA方式、中断方式。最后,我使用GD32F303的I2C接口实现了对BluePillExt开发板板载EEPROM的读写访问。这个过程让我深刻体会到I2C的便利性和实用性。 首先,想象一下I2C接口就像是一个小镇上的邮递员。他(接口)负责在镇上的各个房子(微控制器和外设)之间传递信件(数据)。 1. **简单**:I2C接口就像是个只会骑自行车送信的邮递员。他不需要复杂的交通工具,只需一个简单的自行车就能完成任务。同样,I2C接口不需要复杂的硬件设计,两根线就能实现通信,多么简洁啊! 2. **便宜**:你知道小镇上的邮递员薪水通常都不会太高,对吧?同样,使用I2C接口的设备通常都很便宜,毕竟它只需要两根线和简单的硬件设计。 3. **低速**:你知道邮递员送信的速度通常都不会太快,对吧?他们不是闪电麦皮,不能一瞬间就送完所有的信。同样,I2C接口的速度也是相对较慢的,但这并不影响它的工作效率。毕竟,慢工出细活嘛! 然后我们来聊聊重要参数: * **时钟频率**:这就像邮递员的工作节奏。如果节奏太快,邮递员可能会送错信;如果节奏太慢,信件可能要及时才能到达。所以,我们需要找到一个合适的节奏,既能保证送信的效率,又不会让邮递员感到压力。 * **地址空间**:想象一下每个房子都有一个唯一的门牌号,邮递员通过这个门牌号就能准确找到房子。同样,I2C接口上的每个设备都有一个唯一的地址,微控制器通过这个地址就能找到需要通信的设备。 * **数据传输速率**:这就像邮递员每天能送多少信。如果他送得太快,可能会出错;如果他送得太慢,信件可能会堆积。所以我们需要找到一个合适的速率,既能保证送信的效率,又不会让邮递员感到压力。 现在,你是不是对I2C接口有了更深入的了解呢?如果你觉得这个解释很有趣或者很有帮助,别忘了给我点个赞哦! 此外,7.3节中,我也学习了SPI的基础知识,了解了SPI的特点和重要参数。SPI是一种同步串行通信协议,具有高速度、高效率、占用资源少等优点。通过学习GD32F303的SPI外设及其相关API,我进一步了解了SPI的通信方式,包括查询方式、DMA加速实现SPI高性能传输、SPI半双工通信和中断发送方法。最后,我使用GD32F303的SPI实现了对BluePillExt开发板板载SPI Flash的读写擦除访问。这个过程让我深刻体会到SPI的高效性和灵活性。 总的来说,通过学习GD32F303的USART、I2C和SPI等通信接口的使用方法,我对嵌入式系统中的数据通信有了更深的理解。这不仅让我明白了这些接口在硬件系统中的重要性,也激发了我进一步探索和学习嵌入式系统其他领域的兴趣。我相信,随着我对嵌入式系统学习的深入,我将能够更好地利用这些接口为我的项目带来更多的可能性。 谢谢! 本人在本论坛内的试读 : 《Proteus实战攻略》+7 第五章双足机器人仿真实例 《Proteus实战攻略》+6 第四章AVR单片机仿真 本人在本论坛内的帖子: 【灵动MM32SPIN030C单电机控制器】+(二)磁场导向控制-空间矢量调制(SVM) 【灵动MM32SPIN030C单电机控制器】+(一)使用Motor-DK (MM32SPIN030C)芯片的体验与心得 米尔-STM32MP135开发板试用2-螺旋桨控制(原创)首发(开源) 米尔-STM32MP135开发板试用4-Linux控制螺旋桨升力大小(原创) 【KT148ADSP语音芯片】+试用心得1 【KT6368A双模蓝牙芯片】+体验 我希望这些内容能对您有所帮助! 2023年12月8日
  • 热度 3
    2023-11-17 13:10
    783 次阅读|
    0 个评论
    谢谢兆易创新高工、芯片综合服务商映时科技。谢谢面包板论坛。 感谢 机械工业出版社。 感谢提供的这一次试读机会。 感谢 映时科技 董晓 任保宏 。 接上九篇: 《GD32 MCU原理及固件库开发指南》+试读心得(1) 《GD32 MCU原理及固件库开发指南》+试读心得(2)第八章 《GD32 MCU原理及固件库开发指南》+试读心得第一章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第一章(2) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(2) 《GD32 MCU原理及固件库开发指南》+第三章试读心得 《GD32 MCU原理及固件库开发指南》+第四章试读心得 《GD32 MCU原理及固件库开发指南》+第五章MCU基础外设 电子发烧友jf_39110170 网名“还没吃饭”阅读《GD32 MCU原理及固件库开发指南》中GD32MCU模拟外设的心得体会: 通过学习GD32MCU的ADC和DAC等模拟外设,我深刻理解了这些设备在嵌入式系统中的重要性。ADC和DAC分别作为模拟信号和数字信号之间的桥梁,对于实现系统与外部环境的交互具有不可替代的作用。 首先,关于ADC,我了解到GD32MCU内置的ADC功能强大,使用方便。通过学习规则组和注入组,我了解到它们在数据转换过程中的作用。同时,我也明白了ADC的触发过程,触发方式的不同会导致转换模式也不同。通过使用ADC,我们可以方便地从外部获取模拟信号,并将其转换为数字信号进行处理。 其次,关于DAC,虽然它并不是所有GD32MCU都具备,但是对于某些特定应用场景,DAC的使用可以大大提高系统的性能。通过学习,我了解到DAC可以将数字信号转换为模拟信号。虽然大部分入门级芯片并未配备DAC,但如果我们有这样的需求并且对指标要求不高,可以使用PWM+RC滤波方式进行模拟。 此外,通过学习如何使用DAC0在PA4输出正弦波的例子,我学会了如何通过修改TIMER5定时器的触发输出频率来改变输出波形的频率,以及如何更新convertarr数组的数据来调节信号的波形和幅值。这个例子也让我对信号发生器的原理有了更深入的理解。 总的来说,通过学习GD32MCU的ADC和DAC等模拟外设,我对嵌入式系统中的模拟信号处理有了更深入的理解。同时,我也学会了如何使用这些设备来实现特定的功能。在未来的学习和工作中,我将继续深入学习嵌入式系统的相关知识,不断提高自己的技能和能力。 本人在本论坛内的试读 : 《Proteus实战攻略》+6 第四章AVR单片机仿真 本人在本论坛内的帖子: 【灵动MM32SPIN030C单电机控制器】+(一)使用Motor-DK (MM32SPIN030C)芯片的体验与心得 米尔-STM32MP135开发板试用2-螺旋桨控制(原创)首发(开源) 米尔-STM32MP135开发板试用4-Linux控制螺旋桨升力大小(原创) 【KT148ADSP语音芯片】+试用心得1 【KT6368A双模蓝牙芯片】+体验 我希望这些体会能对你有所帮助! 谢谢!
  • 热度 5
    2023-10-7 23:13
    1302 次阅读|
    0 个评论
    谢谢兆易创新高工、芯片综合服务商映时科技。谢谢面包板论坛。 感谢 机械工业出版社。 感谢提供的这一次试读机会。 感谢 映时科技 董晓 任保宏 。 为感谢大家的帮助与支持我给大家表演一段: 接上八篇: 《GD32 MCU原理及固件库开发指南》+试读心得(1) 《GD32 MCU原理及固件库开发指南》+试读心得(2)第八章 《GD32 MCU原理及固件库开发指南》+试读心得第一章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第一章(2) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(1) 《GD32 MCU原理及固件库开发指南》+试读心得第二章(2) 《GD32 MCU原理及固件库开发指南》+第三章试读心得 《GD32 MCU原理及固件库开发指南》+第四章试读心得 电子发烧友jf_39110170 网名“还没吃饭”阅读《GD32 MCU原理及固件库开发指南》第五章MCU基础外设 的读后感: 最近我回顾了GD32MCU基础外设,包括GPIO、DMA、定时器、RTC、看门狗定时器等,这些是嵌入式系统中常用的接口。通过复习这些外设,我深刻体会到MCU作为控制器的强大之处,可以方便地控制各种硬件设备。首先,GPIO是最基础的外设,可以用于控制LED、LCD等输出设备,以及读取按钮、光敏等输入设备。通过学习GPIO,我了解到它的输出和输入操作是如此简单,可以轻松地实现流水灯和按键输入。此外,GPIO还可以配合DMA实现高速并行数据读取,可以用来模拟UART、I2C、SPI等通信协议。这使我更加深入地了解到嵌入式系统的多样性和灵活性。 其次,我回顾了使用中断方式来实现按键输入实例。EXTI的核心是20个相互独立的边沿检测电路,处理器使用EXTI可以从GPIO或者内部外设获取信息。通过这个实例,我复习了处理器如何感知外界的信息,并作出相应的处理。 此外,我还学习了DMA在SRAM中搬运数据和从Flash向SRAM搬运数据。DMA是一种不依赖于CPU的内存管理技术,可以快速地传输数据。通过这个实例,我了解到在实际工程中如何使用DMA来配合其他外设(如ADC、DAC、SPI、USART等)实现更高效的数据传输和控制。定时器也是我复习的重点之一。通过定时器可以实现软件延时测量事件,输出PWM和测量外部输入信号频率等功能。在定时器之间的同步操作中,我学到了如何实现多个定时器的协同工作,以便更好地控制和管理时间。 最后,我回顾了RTC和看门狗定时器。RTC可以获取日历时间和低功耗唤醒,是实际工程中非常重要的外设之一。而看门狗定时器则是一种可靠性更高的保护措施,可以确保系统在出现异常时能够及时复位并重新启动。通过复习GD32MCU基础外设,我不仅掌握了这些接口的基本使用方法,还深入了解了它们的工作原理和应用场景。这些知识将对我今后的学习和工作产生积极的影响,使我更加深入地了解嵌入式系统的设计和应用。 谢谢! 本人帖子: 米尔-STM32MP135开发板试用2-螺旋桨控制(原创)首发(开源) 米尔-STM32MP135开发板试用4-Linux控制螺旋桨升力大小(原创) 【飞凌AM6254开发板试用】+5内核编译串口芯片Linux驱动(原创) 【Milk-V Duo 开发板免费体验】4-Linux控制小车动作(原创)首发 【飞凌i.MX9352开发板试用】+机械臂游戏2游戏操纵杆控制四自由度机械臂(开源)原创首发 【米尔瑞萨RZ/G2L开发板-创新应用】4(原创)四自由度机械臂游戏开源的项目 【轩辕剑法 ---乾甲申式 】 https://www.bilibili.com/video/BV19w411a7mF/?share_source=copy_web&vd_source=b5b305bec6cbccdfdaee2cf57cf341bc 谢谢!