SAM4E单片机之旅——12、USART】的更多相关文章

清楚了UART的用法之后,现在来研究一下USART的用法.和上一次差不多,这次也通过USART的串口来实现和PC的通信.和上一次不同的是,USART本身就有接收超时的功能,所以这次就不用TC了. USART和UART相比,功能多了许多,可以配置的选项也更多.虽然最主要的差别是USART可以实现同步通信,但PC的串口没有这个功能,所以我们就先不拿这个功能开刀了. 一. 思路 实现思路和上一次使用UART的PDC差不多,区别只是这次直接使用USART的接收超时功能,而不用TC. 二. 电路图 使用的…
DMAC也可以和外设进行数据交互.之前我们曾使用PDC进行USART的数据回显,这次就使用DMAC完成相同的工作.而且由于DMAC有内部的缓冲区,实现起来更为简单. 一. USART设置 因为之前已经做过相关的实验,这里不再重复.需要注意的是,要注意JP11的跳线,以选择正确的协议(RS232).另外,如果使用硬件握手协议的话,注意设置PC端串口通信软件的线路控制信号. 另外,由于不再使用手动的缓冲区和PDC,所以不需要进行相关的设置.同时,也不用再使用USART的接收超时功能. 二. DMAC…
在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架).通过它提供的库,可以很快速地完成新的项目. 这次的最终目标使用ASF在LCD上显示出文字“Hello World!”,现阶段目标是点亮LCD的背光,学习目标是了解怎么样使用ASF提供的模块. 一. ASF Wizard 新建一个项目,根据所使用的开发板选择模板. 然后可以通过ASF Wizard进行所需模块的配置. 默认情况下,已经选择了两个模块.在之前我们以前使用过了其中Generic bo…
DSP(Digital Signal Processing,数字信号处理)中会使用大量的数学运算.Cortex-M4中,配置了一些强大的部件,以提高DSP能力.同时CMSIS提供了一个DSP库,提供了许多数学函数的高效实现. 这次就先做一个简单的尝试,求两个向量的数量积. 一. 硬件 MAC单元 MAC(Multiply-ACcumulate,乘积累加),是DSP中常用的一种运算.Cortex-M4配置了一个32位的MAC单元,它能在1个周期里实现最高难度为32位乘32位再加64位的运算,或是两…
浮点单元(Floating Point Unit,FPU),是用于处理浮点数运算的单元. 为使用FPU,除了需要启用FPU外,还需要对编译器进行设置,以使其针对浮点运算生成特殊的指令.虽然在Atmel Studio 6中,开发板使用的工程模板中默认就完成了这两部分工作,但这次仍然对设置的方法进行介绍,同时简单测试一下FPU的效率. 一. 编译器设置 AS6.1 SP2中,使用的编译器为arm-none-eabi-gcc.exe,版本为4.7.3.其中“none”表示没有指定操作系统,“eabi”…
很多时候,一个电压不仅仅需要定性(高电平或者低电平),而且要定量(了解具体电压的数值).这个时候就可以用到模数转换器(ADC)了.这次的内容是测量开发板搭载的滑动变阻器(VR1)的电压,然后把ADC转换的结果通过UART打印出来.同时,也简单介绍了校准的方法. SAM4E芯片中,ADC是由AFEC管理的.同时,AFEC可以使用一个多路复用器以选择需要转换的信号的通道,也可以通过平均多次ADC转换的结果以提高转换精确度. 一. 电路图 通过顺时针方向旋转该变阻器,PB1引脚电压将变大,其电压变化范…
开发板上配了一个电阻触摸屏,它的控制器是ADS7843,使用SPI进行通信.这次实现的功能是通过SPI接口与该控制器交互,获取触摸屏点击的坐标,并显示在LCD上.略为难点的是SPI作为同步时钟的一种,需要判断时钟的极性以及相位. 为了突出主题,就没有对电阻屏进行校准,显示的是控制器原始的输出值. 一. 电路图 PA12.PA13和PA14引脚的外设A为SPI相关引脚,PA11为SPI的NPCS0.即,该控制器连接在SPI的片选设备0. 二.ADS7843简介 和该控制器交互过程大概如下: 根据设…
为得到更高的带宽,需要使用更高的波特率.UART波特率的计算已经介绍过了,现在就尝试下调整外设的时钟频率.可以有多种方法调整外设时钟(MCK)的频率,这里先介绍先主要时钟(MAINCK)的设置,其中包括外部晶振的使用. 外设的时钟(MCK)可以在慢时钟(SLCK).主要时钟(MAINCK)和MAINCK经锁相环升频后的时钟PLLACK三者中选择,并可以对选择的时钟进行分频.重置时,MCK使用的时钟为MAINCK,且不分频. MAINCK可以选择使用一个嵌入的快速RC振荡器,或是一个晶体振荡器产生…
通信还是比让LED灯闪烁实用得多的. 这次试试使用UART,实现开发版和PC间的通信.功能比较简单,就是把PC发向开发版的内容发送回去.这次主要介绍一下UART的配置,至于通信,则使用较为简单的不断查询UART状态寄存器的循环实现. 一. 准备工作 UART作为异步串口通信协议的一种,所以必须先要准备一根串口线.用串口线将PC的串口和开发板的DBGU口连起来. 同时,在PC上需要准备好串口通信软件. 二. 电路 DBGU有两个引脚分别与PA10和PA9相连,这两个复用引脚的外设A即为UART0.…
PWM在高频情况下,一个很好的用处就是通过控制占空比来控制输出的功率,比如控制风扇转速.LED灯的亮度等.这次就利用PWM的中断功能,动态改变脉冲的占空比,来实现呼吸灯的效果. 一.实现思路 PWM可以选择让计数器在周期结束产生中断(在周期中央对齐时,可能选择在周期中央也产生中断),并且可以在运行的时候动态地调整占空比.周期.极性等属性.所以可以在中断处理函数中动态地改变占空比以改变LED灯的亮度. 这次也将使用通道0和引脚PA0. 二.PWM设置 这里需要用到较高频率的时钟,所以选择使用主时钟…