技术
时钟模式的配置以及使用对MCU来说一直是最基础的东西,在何种情况下使用哪一种时钟模式是我们在使用MCU的过程中最常见的问题之一。
Kinetis系列微控制器具有复杂的时钟系统,时钟系统中多功能时钟发生器、锁相环、锁频环、晶振系统等功能模块相互之间的协调工作能为MCU以及各种外设模块提供稳定的时钟源。通过对KL25时钟系统的结构和配置方法的剖析,以及对多功能时钟发生器运行机制的梳理,提出了时钟源性能的测试方法以及各外设模块时钟源的选择方法。
可见,时钟的正确合理配置对于MCU以及各种外设模块来说是非常重要的,下面我将着重介绍八种模式的时钟如何正确配置。
<font size="3"><strong>前言</strong></font>
STM32 提供了灵活多样的外扩存储器访问实现。本文中,介绍如何利用 QSPI (QuadSPI) 外扩串行
NOR Flash 存储器。首先对 QSPI 接口功能特性进行介绍,然后分别介绍硬件设计和软件开发。并基于 STM32CubeMX,提供访问 MICRON N25Q128A13EF840F 的实现参考。
<font size="3"><strong>一 实现环境</strong></font>
<strong>51单片机</strong>指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前国内的51单片机市场主要为国产宏晶的产品STC系列其号称低功耗,稳定与廉价的特点。
<font size="3" color="blue"><strong>学习51单片机的误区</strong></font>
TrustZone是ARM对ARM6的扩展,其实只是增加了一条指令,一个配置状态位,以及一个新的有别于核心态和用户态的安全态。ARM并没有把TrustZone设计成能够解决所有的安全问题,它的目标是希望TrustZone能把一些安全性要求高的代码放在安全区域里执行,这也就是TrustZone名字的由来。
ARM把TrustZone固化在硬件里的道理是,系统的安全性不能全靠软件来保证,而且改写现有的不安全的软件,使之更安全也不大可行。较为可行的方案就是引入一块安全的硬件逻辑,并且只让一小块软>件控制此安全逻辑。这样既保护了既有投资,也把系统的安全风险降到最小。
因为操作系统和普通应用都可以运行在安全态,所以安全态不同于传统的运行态环状的特权划分,因此ARM把安全态描述成一个平行区域,称之为安全区,又称为安全监控模式。
RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。
我用的是STM32库函数学的485通信,所以接下来就讲讲STM32串口实现485双机通信的原理:
485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A->B的同时B->A,瞬时同步)工作模式,而485是半双工(发时不能收,收时不能发)工作模式。在232通信中,主机在发送数据的同时可以收到从机发过来的数据;但在485通信中,收发要经过模式位的切换来进行,譬如,发送数据时,会把模式为置‘1’,表示为发送模式,此时不能接收;当接收数据时,会把模式位置‘0’,表示为接收模式,此时不能发送。
<font color="blue"><strong> 一、存储器格式(字对齐)</strong></font>
Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。
<strong>存储器格式</strong>
1、大端格式:高字节在低地址,低字节在高地址;
2、小端格式:高字节在高地址,低字节在低地址。
<strong>指令长度</strong>
uC/OS- II是最早进入国内的一款开源RTOS,因为代码开源,又有配套的书籍,加上不大的代码量,在嵌入式群体中最为流行。在写“实用单片机系统”第一版之后,就接触了uC/OS-II,虽然大致的明白其工作原理,但一直似懂非懂,尤其有太多的宏定义,严重的干扰了源码的阅读,加上RTOS带来太多的概念,而这些概念都没有实际用过,不知道如何应用,并且听说有很多陷阱,所以心里有些空,把握不住风险,一直都回避RTOS。
高频机开发的后期,菜单界面编程的复杂性严重的干扰了业务逻辑,逼迫我设计msOS的时候,考虑把业务逻辑与菜单界面分离开,这必须要引入RTOS,而uC/OS-II因为广为人知又相对简单一些,所以选择了uC/OS-II。
1 前言
在进行 USB 开发的过程中,有多个客户反馈,USB 传输数据时出现卡顿现象。本文将针对这
一问题进行分析。
2 问题分析
这几个客户问题现象基本差不多,采用 STM32 作为 Device 设备,在与上位机或者 PC 端双向通讯一段时间后,从 Device 端到 Host 端的数据能够正常,而从 Host 端到 Device 端的数据异常,也就是说,STM32 在一段时间后不再能正常接收数据,但是,如果只是单向通信,就一直都是正常的。
这几个客户,有用 STM32F2 的,也有用 STM32F4 的,有用 CDC 类的,也有用作 HID 设备的,但都使用了 Cube 库。
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。
推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。
我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。
对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。
首先,在PCB设计做图之前,应对一些重要信号进行Space设置和一些线宽设置,如果没有Layoutguaid,这就要求我们自已要有这方面的经验,一般情况下我们要注意以下信号的基本走线规则:
<strong>1、CPU的走线:</strong>
TMS320C6678是KeyStone架构的8核DSP处理器,每个CorePac核的频率最高为1.25 GHz,提供强大的定点和浮点运算能力,同时芯片内部集成了Multicore Navigator、RapidIO、千兆以太网和EDMA等外设,由于芯片处理能力强,外设功能丰富,而且片内集成了大量的硬件加速器,例如Packet Accelerator、Multicore Navigator等,可以广泛地应用在通信、雷达、声纳、火控、电子对抗等领域。从目前的情况看,由于C6678的以上优异的特性,基于TMS320C6678的硬件和软件平台,在未来的5~10年内,将是信号处理平台主流。
<strong>一、</strong>
STM32的AD转换,可以将转换任务组织为两个组:规则组和注入组。
在任意多个通道上以任意顺序进行的一系列转换构成成组转换。
例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。可以模糊的将注入组的转换理解为AD转换的中断一样,规则通道组的转换是普通转换,然而注入组的转换条件满足的情况下,注入组的转换会打断规则组的转换。
<strong>1、引言</strong>
随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中我们常常要测定电容的大小[1]。因此,一种简单、实用的电容测试工具在实际中具有一定的实用价值。一般元件参数的数字化测量是把被测参数转换成频率后再进行测量[2],本设计采用555为核心的振荡电路,将被测电容值转化为频率,并利用AT89S51处理器测量出频率,再通过该频率值计算出电容参数值。
<strong>2、系统的原理框图</strong>
<strong>ARM CPU现在分为3种型号:</strong>
<font color="blue">A系列:</font>主要是用在智能手机上,代表的系统是Andrios和IOS。
<font color="blue">R系列:</font>和M系列一样,更注重实时功能,军工和航天的实时嵌入式设备 arm+ucos或者arm+vxWorks
<font color="blue">M系列:</font>类似于C51单片机,物联网终端数据采集设备,代表的系统是ucos。
<strong>现在市场的主流arm产品分析:</strong>
作者:Jim Harrison
汽车正在快速演化成一台安全联网的自动驾驶机器人,能够感测环境、进行思考并采取自主措施。变化更快的也许是小型自动驾驶公共车辆——出租车、拼车或公交车,能够将我们从公共交通站、市中心或办公区域带到想去的地方(最后一公里)。
其中一个例子是2015年10月推出的NAVYA ARMA自动驾驶电动巴士。这台小型巴士能够安全搭载15名乘客,时速高达28英里,目前正在欧洲和美国的许多社区进行测试或运营,并于CES 2017期间亮相拉斯维加斯街头。
<strong>观察周围环境</strong>
现场可编程门阵列即FPGA,是从EPLD、PAL、GAL等这些可编程器件的基础上进一步发展起来的。作为专业集成电路领域中的半定制电路而出现的FPGA,不但解决了定制电路的不足,而且克服了原有可编程器件因门电路数有限的而产生的缺点。FPGA 的使用十分的灵活,同一片FPGA 只要使用不同的程序就能够达到不同的电路功能。现在FPGA 在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用。随着成本和功耗的进一步降低,将在更多的领域运用FPGA。基于FPGA 的电机测速系统设计,以Quartus II 为设计平台,采用硬件描述语言VHDL和模块化设计的方式,并通过数码管驱动电路动态显示测量的结果。本设计具有外围电路少,集成度高,可靠性强等特点,可以用来测量电机的转速值。
<strong>外围电路设计</strong>
<strong>一、存储器格式(字对齐): </strong>
Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。
存储器格式
1、大端格式:高字节在低地址,低字节在高地址;
2、小端格式:高字节在高地址,低字节在低地址;
指令长度:
GPIO英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。由于MCU的通信外设接口众多,不可能每一外设固定一组GPIO,在MCU中,可通过软件运行期间能够动态配置和控制的引脚的状态,所以每个 GPIO 口除了通用输入输出功能外,还可能有其它复用功能。
在MM32L0产品中,每个 GPIO 端口有两个 32 位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR),一个 32 位置位/复位寄存器(GPIOx_BSRR),一个 16 位复位寄存器(GPIOx_BRR)、一个 32 位锁定寄存器(GPIOx_LCKR)和两个复用功能选择寄存器(GPIOx_AFRH)和(GPIOx_AFRL)。
针对ARM-Linux程序的开发,主要分为三类:应用程序开发、驱动程序开发、系统内核开发,针对不同种类的软件开发,有其不同的特点。今天我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本开发环境。
<font size="4"><strong>1、ARM-Linux应用开发和单片机开发的不同</strong></font>
在8位单片机中没有16位数的操作指令,所有的int型数据都要通过两个字节分开操作,使用的方法不用,生成的代码也不相同,当然效率也不一样,通过指针对16位数进行操作可以得到高效的代码。
比如通过串行口接收数据,或者从串行的EEPROM中读取的数据,或者从大于8位的A/D读取的数据,由于8位单片机的数据线是8位的,高于8位的数据都要分成两个字节分别读取,然后写入到RAM中去再进行计算,或者把16位的int型数据从RAM中读出再分别把高低字节存到EEPROM或者送到D/A,或者通过串行口发送出去,方法有很多种,下面用多种方法进行实现该操作,这里只演示写入到16位的情况,读取的情况非常相似,不赘述。
<strong>(1)使用联合 (union)</strong>