文章目录

  • 写在前面
  • 正文
      • 步骤4:忽略不需要的外围设备
      • 步骤5:研究您的配置软件
      • 第6步:调查您的API
    • 结论
  • 系列回顾
  • 交个朋友

写在前面

原文链接
相关博文
博客首页
注:知识搬运,供学习交流使用,侵联删!
本文提供了一些技巧,可以有效利用微控制器的数据手册(或参考手册或用户指南)中的外围部分。

正文

在上一篇文章中,我指出了与微控制器文档相关的一些困难,然后讨论了我建议的过程中的前三个步骤。 前三个步骤通常适用于MCU文档,在本文中,我们将重点介绍与外围设备有关的信息。

步骤4:忽略不需要的外围设备

微控制器内的外围模块在很大程度上彼此独立。 确保您了解这一点,因为这是基于MCU的系统设计中的一个重要概念。 下图强调了这一点。

处理器的各个元素紧密互连,但是外围设备被描述为与处理器具有独立连接的独立模块。这准确地反映了实际的微控制器操作:如果不需要给定的外设,则将其置于非活动状态,可以忽略。

但是,微控制器并非旨在防止单独的外围模块之间进行交互,因为在某些情况下这种交互是可取的,这就是为什么我说外围模块“在很大程度上是独立的”。例如,由计时器模块生成的周期性信号可用于建立UART模块的波特率或启动ADC模块执行的转换。

不过,一般原则是合理的:未使用的外围设备不会影响设备的整体功能,因此,您无需阅读数据手册中解释这些未使用外围设备所有详细信息的部分。由于许多应用仅需要现代微控制器提供的大量外围功能的一小部分,因此仅此一步就可以消除很大一部分文档负担。

步骤5:研究您的配置软件

硬件配置可能是微控制器开发中最苛刻和最繁琐的方面之一。 对外围模块进行广泛的寄存器级配置需要注意细节,仔细检查数据手册以及进行许多尴尬的位操作。

幸运的是,人们意识到这不是很好地利用工程师的时间,因此制造商决定创建软件工具,以大大简化硬件配置任务。 例如,Microchip提供了MPLAB代码配置器,使设计人员可以使用图形界面生成外设配置代码。 Silicon Labs的Config2应用程序(请参见下面的屏幕截图)执行相同的操作。

如果在假设您需要手动配置所有MCU硬件的情况下访问数据手册,您可能会发现,越来越绝望的感觉使您无法集中精力。 相信我,硬件配置工具可以大大减少您需要吸收的数据手册资料的数量。

这里的困难是识别不必要的信息。 不幸的是,我从未遇到过一个数据手册,该数据手册的标题为“如果您打算使用配置工具,您实际上需要知道的事情”。 我建议您在进入数据手册之前先阅读配置软件的文档,当您阅读涵盖给定外围设备的部分时,请忽略特定于配置的详细信息,直到您对软件有了一定的了解。

德州仪器(TI)仅为其MSP430电容式触摸感应功能提供了完整的软件工具。 图形界面使您可以配置和优化上限感测按钮,滚轮,滑块和接近传感器。
最重要的是,您不应该浪费时间在免费的,易于使用的软件中的数据手册细节上。

第6步:调查您的API

硬件配置工具有一个主要限制:不能在程序执行期间使用它们。配置软件是用于创建代码的工具。它无法实时修改微控制器的操作。

幸运的是,所需硬件配置的很大一部分通常仅发生一次,即在重置后执行的初始指令序列中。但是,确实有些时候您想在程序执行期间进行精确的修改,也许是为了响应外部事件。这是应用程序编程接口(API)发挥作用的地方。

“ API”在这里可能不是最好的术语,但是我不熟悉任何其他更合适的词或缩写。我指的是制造商提供的编程“快捷方式”集合。 Atmel将其称为高级软件框架(您可以在本文中阅读有关ASF的更多信息),我认为Silicon Labs使用术语软件开发套件(SDK)。在任何情况下,名称都远不如内容重要,即库函数,示例代码,宏,预处理器定义以及任何其他有助于程序员直接与设备硬件进行交互而又不成为复杂配置设置专家的内容。
注:application programming interface (API)

高级软件框架具有与微控制器的外围设备相对应的各个模块。

我认为熟悉您的微控制器的硬件很重要,我不建议您完全依赖库函数,预打包的驱动程序,示例代码和图形配置工具的“跨接”方法。 在我看来,这是麻烦的秘诀,并且削弱了使用可高效,直接访问底层硬件的处理设备的好处。

因此,目标是找到适当的平衡。 您需要研究微控制器的硬件并了解其内部功能的各个方面,但是当涉及到非常具体的细节时,您不想浪费时间重新设计轮子。 您设备的数据表中可能包含许多已经包含在API中的信息,并且其中许多信息都可以被浏览甚至忽略。

结论

本文的标题是“如何阅读微控制器数据手册”,尽管也许更合适的标题是“如何不阅读微控制器数据手册”。 事实是,文档过载是现代微控制器的一个严重问题,而快速吸收重要信息的一项基本技术是学习避免不必要的信息。

系列回顾

What Is a Microcontroller? An Introduction to the Central Component in Countless Electronic Devices

How to Choose the Right Microcontroller for Your Application

How to Read a Microcontroller Datasheet: Introduction and First Steps

交个朋友

FPGA/IC技术交流2020

如何阅读微控制器数据手册:探索硬件 ?相关推荐

  1. 如何阅读微控制器数据手册:简介和第一步

    文章目录 写在前面 正文 数据表难点 某些规格表规格 步骤1:评估文件的性质 步骤2:忽略核心 第3步:不要仔细检查电气规格 概括 系列回顾 交个朋友 写在前面 原文链接 相关博文1 相关博文2 博客 ...

  2. Cortex-M系列微控制器学习资源汇总

    原文地址:Cortex-M系列微控制器学习资源汇总 - 知乎 (zhihu.com) 前言: 自己前段时间开始接触基于Cortex-M7架构的STM32微控制器,从零开始摸索了很多,总结了很多资源.本 ...

  3. 微处理器硬件喂狗_硬件基础:微控制器到底是什么?

    微处理器硬件喂狗 by Taron Foxworth 通过塔伦·福克斯沃思(Taron Foxworth) 硬件基础:微控制器到底是什么? (Hardware Fundamentals: what e ...

  4. Arduino Uno微控制器采用的是Atmel的ATmega328

    参考:https://www.yiboard.com/thread-831-1-1.html 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开 ...

  5. python微控制器编程从零开始-Python微控制器编程从零开始 使用MicroPython

    目 录 第1章 概述 1 1.1 MicroPython简介 1 1.2 设计思想 2 1.3 MicroPython探究 2 1.4 面向对象编程和一些Python基础 4 1.4.1 面向对象的概 ...

  6. 十六进制转八进制c++代码_如何将十六进制代码上传到微控制器?

    十六进制转八进制c++代码 Read: 8051 Microcontroller programming using Keil Uvision IDE 阅读: 使用Keil Uvision IDE进行 ...

  7. python微控制器编程从零开始下载_Python微控制器编程从零开始(使用MicroPython)...

    目 录 第1章 概述 1 1.1 MicroPython简介 1 1.2 设计思想 2 1.3 MicroPython探究 2 1.4 面向对象编程和一些Python基础 4 1.4.1 面向对象的概 ...

  8. 【20210326期AI简报】用RISC-V微控制器开发难不难?行人搜索AI框架新突破~

    导读:本期为 AI 简报 20210326 期,将为您带来 9 条相关新闻,明日朝花节,有时候要冲,有时候也要出去走走~ 本文一共 字,通篇阅读结束需要 7~11 分钟 1. 首个无需锚框(Ancho ...

  9. 什么是微控制器? 通用组件的定义特征和架构

    文章目录 写在前面 正文 什么是微控制器? 微控制器与微处理器 微控制器与数字信号处理器(DSP) 微控制器的要素 中央处理单元 存储器 外围设备 支持电路 下一篇文章 交个朋友 写在前面 原文链接 ...

最新文章

  1. mysql 5.6.24 win32_mysql-5.6.24-win32解决没有my.ini并且修改编码
  2. 厚积薄发!他读博前三年零文章,后期发力产出11篇一作,现任985高校博导
  3. 使用diamond2的一些问题的解决
  4. JSON,数组根据字段分组
  5. MySQL 子查询 嵌套查询
  6. centos系统所需软件
  7. Spring Cloud Security:Oauth2实现单点登录
  8. mysql inner join where_mysql中,inner join和where的结合问题
  9. 前端学习(3328):闭包的形式4
  10. FTP协议、电子邮件系统、Telnet远程控制
  11. android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...
  12. 设计素材PSD分层模板|美食类海报设计技法
  13. Codeforces Round #772 (Div. 2) C. Differential Sorting(思维+构造)
  14. 将视频设置为电脑动态桌面的方法
  15. 微模块、冷通道监控系统解决方案
  16. 报修管理系统微信小程序源码 带前端后端源码
  17. C# 繁体转简体 简体转繁体
  18. android 系统开启流量,安卓系统抖音流量权限怎么打开
  19. shape属性详解使用
  20. 生信文献 | TIMER2.0用于分析肿瘤免疫细胞浸润

热门文章

  1. 3745路由器配置简单的dhcp server
  2. java的for循环嵌套_优化Java的for循环嵌套的高效率方法
  3. countif函数比较两列不同_COUNT函数家族的使用(下篇)
  4. java 枚举 循环_java – 在枚举中实现内部接口时的循环继承
  5. python设置画布背景图_如何使画布中的背景图像随窗口展开?
  6. html5自适应团购,基于HTML5的O2O团购平台的设计与实现
  7. svn文件夹不显示绿色勾的解决方法
  8. 2fsk基于matlab的仿真,基于matlab的2ask、2psk、2fsk的仿真
  9. 580显卡驱动_AMD6000系显卡终于来了!3A平台神秘加成?
  10. python划分代码_多分类评价指标python代码