SAM4E单片机之旅——8、UART初步】的更多相关文章

通信还是比让LED灯闪烁实用得多的. 这次试试使用UART,实现开发版和PC间的通信.功能比较简单,就是把PC发向开发版的内容发送回去.这次主要介绍一下UART的配置,至于通信,则使用较为简单的不断查询UART状态寄存器的循环实现. 一. 准备工作 UART作为异步串口通信协议的一种,所以必须先要准备一根串口线.用串口线将PC的串口和开发板的DBGU口连起来. 同时,在PC上需要准备好串口通信软件. 二. 电路 DBGU有两个引脚分别与PA10和PA9相连,这两个复用引脚的外设A即为UART0.…
交互还是很有必要的,而且使用键盘和显示器的交互效率还是很高的.当然,可以直接使用UART进行字符的输入和输出.但是又何必浪费了C的标准输入输出的格式控制之类的功能呢? 这次内容就是使用scanf() 和printf() 函数进行PC和开发板的交互. 一. C标准函数库 与硬件相关的功能,最终都需要直接访问硬件.这一点,C的标准函数库的实现面对众多的硬件设备,已经无能为力了. Atmel Studio使用的C标准库的实现疑似为Newlib. 在工程的 ASF\sam\utils\syscalls\…
在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架).通过它提供的库,可以很快速地完成新的项目. 这次的最终目标使用ASF在LCD上显示出文字“Hello World!”,现阶段目标是点亮LCD的背光,学习目标是了解怎么样使用ASF提供的模块. 一. ASF Wizard 新建一个项目,根据所使用的开发板选择模板. 然后可以通过ASF Wizard进行所需模块的配置. 默认情况下,已经选择了两个模块.在之前我们以前使用过了其中Generic bo…
使用PDC进行数据的收发能减少CPU的开销.这次就使用PDC进行UART数据的接收与发送,同时,也利用TC也实现了PDC的接收超时. PDC是针对外设的DMA控制器.对比DMA控制器,它更为简便,与相应外设的结合也更为紧密.比如说,要配置PDC时,首先要启用相应的外设的时钟:同时PDC收发的状态是通过外设上的寄存器反映出来的:甚至中断也是通过相应外设产生的. 使用PDC时,只需设置好传输时内存的地址,以及传输长度,就可以在外设和内存之前进行数据传输了.而SAM4的PDC甚至还提供了一个类似FIF…
为使用更更高的波特率,则需要更更高的外设时钟的频率.这个时候就需要用到锁相环(PLL)了.锁相环可以对输入的时钟进行分频.升频后进行输出.MCK可以使用的锁相环为PLLA,而PLLA的输入时钟为MAINCK. 本节将配置MCK频率为120 MHz,UART波特率为115200 Hz. 一. PLLA的限制 使用PLLA时需要考虑到它的限制,不然配置失败了也不好找原因. 对输入输出时钟频率的限制 PLLA的输入时钟范围需在3—32 MHz之间(PLLA对输入时钟可以进行预分频),输出时钟需要在80…
为得到更高的带宽,需要使用更高的波特率.UART波特率的计算已经介绍过了,现在就尝试下调整外设的时钟频率.可以有多种方法调整外设时钟(MCK)的频率,这里先介绍先主要时钟(MAINCK)的设置,其中包括外部晶振的使用. 外设的时钟(MCK)可以在慢时钟(SLCK).主要时钟(MAINCK)和MAINCK经锁相环升频后的时钟PLLACK三者中选择,并可以对选择的时钟进行分频.重置时,MCK使用的时钟为MAINCK,且不分频. MAINCK可以选择使用一个嵌入的快速RC振荡器,或是一个晶体振荡器产生…
很多时候,一个电压不仅仅需要定性(高电平或者低电平),而且要定量(了解具体电压的数值).这个时候就可以用到模数转换器(ADC)了.这次的内容是测量开发板搭载的滑动变阻器(VR1)的电压,然后把ADC转换的结果通过UART打印出来.同时,也简单介绍了校准的方法. SAM4E芯片中,ADC是由AFEC管理的.同时,AFEC可以使用一个多路复用器以选择需要转换的信号的通道,也可以通过平均多次ADC转换的结果以提高转换精确度. 一. 电路图 通过顺时针方向旋转该变阻器,PB1引脚电压将变大,其电压变化范…
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”…
CAN协议具有良好的可靠性,在工业中应用广泛.这次就先熟悉CAN的基本功能. 开发板有两个CAN,每个CAN有8个信箱.这次内容是从CAN0的信箱0发送数据到CAN1的信箱0. 除本次使用的功能外,CAN还有远程帧.强大的错误处理功能. 一.电路 CAN总线上的逻辑数值是用显性电平和隐性电平表示的.“显性”的意思是指在同时传输显性电平和隐性电平时,总线上呈现的是显性电平.显性电平表示逻辑“0”,隐性电平表示逻辑“1”. 在使用CAN的过程中,需要使用一个CAN收发器进行电平的转换与解释.开发板使…