M0 M4之UART初始化】的更多相关文章

新唐的M0/M4 UART都有16级或者64级FIFO,用来缓存UART数据的收/发.例如:如果RX FIFO中断触发级别设为14,UART接收14个字节才会发生RDA(接收数据可得)中断.这样可以降低CPU的loading.上面的情况,如果RX只接收到10个字节怎么办呢?这时候就要用到接收超时中断.当RX FIFO中收到1个字节以后,定时器就开始计数,如果定时器超时都没有再收到下一个字节就会发生接收超时中断(RTO).每个IP的初始化都需要先初始化时钟,然后才是IP功能初始化.初始化UART之…
新唐所有的M0/M4芯片基本上所有的IO都可以发生中断,为了符合大家的习惯还是有所谓的外部中断EINT0和EINT1.有2跟GPIO脚可以配置为EINT0功能和EINT1功能,分别将发生EINT0中断和EINT1中断.其它的IO脚也会导致发生中断,但是为很多IO共用一个向量的方式,例如:PA/PB/PC共用中断号4,PD/PE/PF共用中断号5.每个IO内部一般都带内部上拉电阻,软件可以打开.一般用于按键,或者I2C不想外部加上拉电阻的情况.每个IO都有边沿中断消抖功能,一般用作按键的时候或者外…
新唐的定时器一般有很多功能:普通的定时功能,事件计数功能,捕获功能,超时触发ADC等等.大家如果感兴趣可以读一下<NANOB Timer功能介绍以及在弱灌注中的应用.pdf>,虽然各个系列Timer功能有差异,但是使用方法上基本一致,只是细节上有些差异.用到的时钟记得在Sys_Init中使能并等待时钟稳定. 这里只介绍简单的定时功能. /*Timer0中断处理函数,Timer0发生超时,捕获等都会发生该中断.但是因为下面的代码只使能了超时中断,所以该代码只demo超时的处理*/ void TM…
系统初始化包含了时钟(clock)初始化和多功能引脚(Multi Function Pin 简称MFP寄存器)配置.void SYS_Init(void) { /* 解锁保护寄存器 */ SYS_UnlockReg(); /*芯片中很多寄存器是写保护的,例如PWRCTL寄存器,要写这些寄存器需要先解锁*/ /* 使能外部高速晶振,一般范围是 (4~24 MHz) */ CLK->PWRCTL |= (0x1 << CLK_PWRCTL_HXT_EN_Pos); // HXT Enable…
SAM3S中的UART串口是一个两线异步收发器.这个串口能用来通信或者跟踪.有两个DMA通道与UART串口关联,可通过使用DMA处理串口传输以节省CPU时间. SAM3S4C中有两个UART.与外设引脚的对应关系如下: 板子上使用的是UART0,及PA9和PA10引脚. SAM3S的UART结构框图 串口初始化,收发数据 的步骤如下: 1.配置相应IO口的引脚(设置IO时钟及引脚工作模式) 2.打开UART时钟 3.复位并停止UART 4.设置UART功能(奇偶校验UART_MR.波特率UART…
时钟控制器为整个芯片提供时钟源,包括系统时钟和所有外围设备时钟.该控制器还通过单独时钟的开或关,时钟源选择和分频器来进行功耗控制.在CPU使能低功耗PDEN(CLK_PWRCTL[7]) 位和Cortex®-M4内核执行WFI指令后,芯片才能进入低功耗模式.直到唤醒中断发生,芯片才会退出低功耗模式.在低功耗模式下,时钟控制器会关闭外部4~24MHz高速晶振和内部22.1184MHz高速RC振荡器,以降低整个系统功耗.下图所示各模块时钟发生器和时钟源的简图. 时钟发生器 时钟发生器由如下5个时钟源…
#define CLK_PWRCON_PD_WAIT_CPU_Pos 8 #define CLK_PWRCON_PD_WAIT_CPU_Msk (1ul << CLK_PWRCON_PD_WAIT_CPU_Pos) #define CLK_PWRCON_PWR_DOWN_EN_Pos 7 #define CLK_PWRCON_PWR_DOWN_EN_Msk (1ul << CLK_PWRCON_PWR_DOWN_EN_Pos) #define CLK_PWRCON_PD_WU_ST…
对于S5PV210 UART驱动来说,主要关心的就是drivers/serial下的samsung.c和s5pv210.c连个文件. 由drivers/serial/Kconfig: config SERIAL_SAMSUNG depends on ARM && PLAT_SAMSUNG config SERIAL_S5PV210 depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442) && SER…
1.从ZMain里面的main函数开始分析 2.进入int main( void ); HalDriverInit();   //硬件相关初始化,有DMA初始化和UART初始化 3.进入HalDriverInit(); /* DMA */#if (defined HAL_DMA) && (HAL_DMA == TRUE)    // Must be called before the init call to any module that uses DMA. HalDmaInit();#…
参考: 1)<USER'S MANUAL-S3C6410X>第31章 UART 2)u-boot uart初始化及读写:u-boot-x.x.x/board/samsumg/smdk6410/lowlevel_init.S  u-boot-x.x.x/cpu/s3c64xx/serial.c 3) 内核串口驱动:linux-x.x.x/driver/tty/serial/s3c6400.c samsung.c serial_core.c 代码: uart.c #include "ua…
一.Exynos4412 UART 的特性 Exynos4412 中UART,有4 个独立的通道,每个通道都可以工作于中断模式或DMA 模式,即 UART 可以发出中断或 DMA 请求以便在UART .CPU 间传输数据.UART 由波特率发生器.发送器.接收器和控制逻辑组成. 使用系统时钟时,Exynos4412 的 UART 波特率可以达到 4Mbps .波特率可以通过编程进行 . Exynos4412 UART 的通道 0有 256 字节的发送 FIFO 和 256 字节的接收FIFO :…
去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了一些主要的外设,如今開始玩了BLE的相关开发. 在官方的SDK文件夹下.我们能够找到Nordic\nrf51822\Board\pca10001\ble\experimental\ble_app_uart这个project文件,另外SDK文档中也有简介BLE UART数据转发的应用. 该应用包含一个…
1,在start.S中执行373行b lowlevel_init跳转到/board/samsung/goni/lowlevel.S中,此代码中初始化一样硬件. 找到241行,此行执行URAT初始化,如下图: 但此UART初始化与s5pv210的UART初始化不同,需要自己手动修改. 2,在lowlevel.S的463行下添加如UART初始化代码: /****add S5PV210 UART Initialize by xu***/ ldr r0, =0xE2900000 ldr r1, =0x3…
1. 综述 UART的基础知识,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器. 做软件开发的人都知道打印信息的重要,说到打印信息,我们就不得不说UART串口打印.做单片机开发的人,打印信息主要的来源就是UART串口打印.因此,UART会比较常用到,所以在此对UART串口进行一个说明. 2. 关于STM8S103手册的UART简介 3. UART初始化参数详细讲解 3.1 BaudRate(波特…
本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明     UART用于传输串行数据:     发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出:     接收数据时,UART检测另一根电线上的信号,将串行收集放在缓冲区中,CPU即可读取 UART获得这些数据.     UART之间以全双工方式传输数据,最精简的连接方式只有3根线:TxD.RxD.Gn…
本文主要记录: 1.uart设备注册 2.uart驱动注册 3.上层应用调用有些地方理解的还不是很透彻,希望指正. 1.uart设备注册过程 MACHINE_START(MX6Q_SABRESD, "Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board") /* Maintainer: Freescale Semiconductor, Inc. */ .boot_params = MX6_PHYS_OFFSET + 0x100, .fixu…
s3c2440包含三个通用异步收发器,可工作于中断模式或DMA模式.每个UART包含两个64字节的FIFOs用于接收和发送数据.可编程设置波特率.1或2个停止位,5/6/7/8个数据位和奇偶校验状态. 串口线一般是3条,TxD,RxD,Gnd,即发送线,接收线和地线. 数据传送之前,UART之间约定好传输速率(每位所占据的时间,其倒数沩波特率).数据传输的格式(多少个数据位.是否使用校验位.奇校验还是偶校验.多少个停止位). 发送数据时,CPU先将数据写入发送FIFO,UART会自动将FIFO中…
1.  波特率(Baud rate)即调制速率,1波特即指每秒传输1个符号. 2.  非FIFO模式,即数据传输不利用FIFO缓存,一个字节一个字节地传输. 3.  位能够用来推断发送缓存器中是否为空,为空时能够发送数据.因为在这里我们不进行数据传输时错误的推断.因此错误状态寄存器UERSTATn不须要.FIFO状态寄存器UFSTATn和MODEM状态寄存器UMSTATn在这里也不须要. 本来是想使用中断方式接收和发送的,可是仅仅实现发送接收一个字符. 之后试下查询方式,结果能行. Uart方框…
一.UART初始化 1. kernel-3.18/drivers/misc/mediatek/uart/uart.c static int __init mtk_uart_init(void) { ; tx_history.buffer = kzalloc(UART_HISTORY_DATA_SIZE, GFP_KERNEL); rx_history.buffer = kzalloc(UART_HISTORY_DATA_SIZE, GFP_KERNEL); tx_history.index =…
一.前言 1.简介 在上一篇UART详解中,已经有了关于UART的详细介绍了,也有关于如何使用STM32CubeMX来配置UART的操作了,而在该篇博客,主要会讲解一下如何实现UART串口的发送功能. 2.UART简介 嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter). 3.准备工作 在UART详解中已经有了详细的说明,在这里就不说明了. 注: 建议每次编写好一个相关功…
一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter). 3.准备工作 在UART详解中已经有了详细的说明,按照里面的说明即可. 注: 建议每次编写好一个相关功能且测试功能成功使用后,保存备份并压缩成一份Demo例程,…
本文是<Go语言调度器源代码情景分析>系列的第12篇,也是第二章的第2小节. 本章将以下面这个简单的Hello World程序为例,通过跟踪其从启动到退出这一完整的运行流程来分析Go语言调度器的初始化.goroutine的创建与退出.工作线程的调度循环以及goroutine的切换等重要内容. package main import "fmt" func main() { fmt.Println("Hello World!") } 首先我们从程序启动开始分…
UBOOT2016.05 UART初始化及设置 SPL阶段 第一部分C函数 |- s_init //(arch/arm/cpu/armv7/am33xx/board.c) |- set_uart_mux_conf(\board\ti\am335x\board.c会用到Kconfig文件中的CONFIG_CONS_INDEX来初始化对应的UART) |-enable_uart0_pin_mux(\board\ti\am335x\Mux.c) |-configure_module_pin_mux  …
声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改.有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出.再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处.我的目的是想让大家共同进步.希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善.以后还会把整理的东西陆续公布出来,谢谢光临!! 大多数bootloader都分为stage1和stag…
第一章:开发环境搭建 软件列表:详细说明 1.系统定制和编译:Platform Builder 5.0 (依赖于Net Framework1.1)2.应用程序编写:早期的用Embedded Visual C++ 4.0 (依赖于ActiveSync) ,现在一般都用:Visual Studio 2005 (依赖于ActiveSync和Net framework2.0)3.开发环境和库文件:SDK (依赖于应用程序安装,VS2005或EVC4) 软件安装顺序:NetFramework1.1―> P…
转载:http://blog.csdn.net/l_thread/article/details/6020036 开始看start.s中的代码,又一句.balignl 16,0xdeadbeef,不知什么意思,网上搜了一下了解到这条命令的作用如下: .balign[wl] abs-expr, abs-expr, abs-expr 增加位置计数器(在当前子段)使它指向规定的存储边界.第一个表达式参数(结果必须是纯粹的数字)是必需参数:边界基准,单位为字节.例如,‘.balign 8’向后移动位置计…
uboot 详细注释讲解 声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改.有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出.再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处.我的目的是想让大家共同进步.希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善.以后还会把整理的东西陆续公布出来,谢谢光临!! 大多数bootloader都…
原文地址:uboot-的start.S详细注解及分析 作者:zhouyg11 大多数bootloader都分为stage1和stage2两部分,u-boot也不例外.依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性. 1.Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:(1)定义…
一.OpenGL与3D图形世界1.1.OpenGL使人们进入三维图形世界 我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体.我们又生活在一个充满信息的世界中,能否尽快地理解并运用这些信息将直接影响事业的成败,所以我们需要用一种最直接的形式来表示这些信息. 最近几年计算机图形学的发展使得三维表现技术得以形成,这些三维表现技术使我们能够再现三维世界中的物体,能够用三维形体来表示复杂的信息,这种技术就是可视化(Visualization)技术.…