精华内容
下载资源
问答
  • 随着数模转换器的转换速率越来越高,JESD204B 串行接口已经越来越多地广泛用在数模转换器上,其对器件时钟和同步时钟之间的时序关系有着严格需求。本文就重点讲解了JESD204B 数模转换器的时钟规范,以及利用TI 公司...
  • 串口时钟显示代码

    2013-07-12 22:14:29
    单片机 串口 时钟 代码 编译 arduino开发必用
  • nRF51822外设时钟串口时钟

    千次阅读 2016-12-28 16:39:45
    在使用串口配置的时候吗,发现前辈们并没有像STM32那样配置GPIO引脚的速度,甚是奇怪,找到参考手册关于时钟管理的,发现并没有关于串口时钟的配置要求,然后就翻到数据手册,OMG,终于真身现形了,原来串口外设要...

    在使用串口配置的时候吗,发现前辈们并没有像STM32那样配置串口和GPIO(不知道串口的时钟大小),甚是奇怪,找到参考手册关于时钟管理的,发现并没有关于串口时钟的配置要求,然后就翻到数据手册,OMG,终于真身现形了,原来串口外设要使用HFCLK,即高频时钟,即外接的高频晶振时钟,而51822的外接高频晶振时钟只能是16M或者32M,这里本人使用16M,那么显然UART使用的16M的时钟源!不信,请向下看!


    在 nRF51_Series_Reference_manual v3.0.pdf参考手册里的“Clock management (CLOCK)“”一节中只介绍了其管理方式,却没有告诉我们哪个外设是使用哪个时钟




    在nRF51822_PS v3.1.pdf数据手册


    展开全文
  • 51单片机—串口时钟

    千次阅读 2016-10-21 13:04:34
    #include #include "delay.h" #define SEGPORT P0 #define uchar unsigned char sbit seg_select = P2^1; sbit bit_select = P2^0; sbit beep = P2^2;...uchar segdata[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x
    #include <reg52.h>
    #include "delay.h"
    
    #define SEGPORT P0
    #define uchar unsigned char 
    
    sbit seg_select = P2^1;
    sbit bit_select = P2^0;
    sbit beep = P2^2;
    
    uchar segdata[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    uchar bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    uchar tempdata[8];
    
    uchar shi = 0;
    uchar fen = 1;
    uchar miao = 0;
    
    uchar cshi = 0;
    uchar cfen = 0;
    uchar cmiao = 0;
    
    void display()
    {
    	   static unsigned char i = 0;
    	
         SEGPORT = 0x0;
    		 seg_select = 1;
    		 seg_select = 0;
    						    
    		 SEGPORT = 0xff;
    	   bit_select = 1;
    		 bit_select = 0;
    	   
         	
    	   SEGPORT = tempdata[i];
    		 seg_select = 1;
    		 seg_select = 0; 
    						    
    		 SEGPORT = bitdata[i];
    		 bit_select = 1;
    		 bit_select = 0;
    			
         i++; 	
    		 if(8 == i)
    		 {
    			     i = 0;
         }						    	    
    }
    
    
    void timer0_init(void)
    {
    	   EA = 1;
    	   TMOD |= 0x01;
    	   TH0 = (65536 - 20000) / 256;
    	   TL0 = (65536 - 20000) % 256;
    	   ET0 = 1;
    	   TR0 = 1;
    } 
    
    
    void timer0_isr() interrupt 1
    {    
    	   static uchar i = 0;
    	   TH0 = (65536 - 20000) / 256;
    	   TL0= (65536 - 20000) % 256;
    	
    	   i++;
         if(50 == i)
    		 {
    			    i = 0;
              miao++;
              if(60 == miao)
              {
    						   miao = 0;
    						   fen++;
    						   if(60 == fen)
    							 {
    								    fen  = 0;
    							      shi++;
    								    if(24 == shi)
    										{
    											    shi = 0;
                        }	
                   }	  
              }						
         }
         tempdata[0] = segdata[shi / 10];
         tempdata[1] = segdata[shi % 10];
         tempdata[2] = 0x40;
         tempdata[3] = segdata[fen / 10];
         tempdata[4] = segdata[fen % 10];
         tempdata[5] = 0x40;
         tempdata[6] = segdata[miao / 10];
         tempdata[7] = segdata[miao % 10];		
         
         		 
    }	 
    
    
    
    void uart_init(void)
    {
    	   SCON = 0x50;
    	   TMOD |= 0x20;
    	   TH1 = 0xfd;
    	   TR1 = 1;
     	   EA = 1;
     	   ES = 1;
    }
    
    void uart_send_byte(unsigned char byte)
    {
    	   SBUF = byte;
    	   while(!TI);
    	   TI = 0;
    }
    
    void uart_send_str(unsigned char *s)
    {
    	   while(*s != '\0')
    		 {
    			    uart_send_byte(*s);
    			    s++;
         }	 
    }
    
    void uart_isr() interrupt 4
    {
    	   unsigned char i = 0;
    	   unsigned char temp[6];
    	   uart_send_str("Please input time :");
    		for(i = 0; i < 6; i++)
    	{
    		while(1)
    		{			
                  if(RI)
                   {					 
    				    
    				   temp[i] = SBUF;
    				   
    				   RI = 0;
    					break;
    				} 
    		}	
    	}
            uart_send_str("you input is :");
    		    uart_send_str(temp);
            uart_send_str("\r\n");	
         
            shi = ((unsigned int)temp[0] - 48) * 10 + ((unsigned int)temp[1]  - 48);
    		    fen = ((unsigned int)temp[2] - 48)* 10 + ((unsigned int)temp[3]  - 48);
    		    miao = ((unsigned int)temp[4] - 48)* 10 + ((unsigned int)temp[5]  - 48) ;
    
        	 
    }
    
    
    
    void main()
    {   
    
    	  timer0_init();
    	  uart_init();
    	  while(1)
    		{
    			display();
    			delay_us(200);			 
    			
        }
    }	
    

    展开全文
  • 本文只是简述如何配置时钟串口,具体详细解释请查看芯片手册 系统时钟 系统高频时钟源切换步骤 让2个高频时钟源起振 等待目标时钟源稳定; 延时一小段时间63us 不分频输出 选中目标高频时钟源作为系统主时钟 ...

    本文只是简述如何配置时钟及串口,具体详细解释请查看芯片手册

    系统时钟

    系统高频时钟源切换步骤

    • 让2个高频时钟源起振
    • 等待目标时钟源稳定;
    • 延时一小段时间63us
    • 不分频输出
    • 选中目标高频时钟源作为系统主时钟
    • 确认当前工作的系统的时钟是不是所选的高频时钟

    Example

    设置32M高频时钟为主时钟源

    SLEEPCMD &=0xFB //设置SLEEPCMD第2位为0表示2个高频时钟源起振
    While(0 == (SLEEPSTA & 0x40)); //等待稳定(SLEEPSTA寄存器的第6位为1表示32M时钟源稳定)
    Delau_us(63);//延时63us以上
    CLKCONCMD &= 0xF8;//不分频(CLKCONCMD的低3位设置为0表示不分频)
    CLKCONCMD  &= 0xBF//CLKCONCMD第6位清0 设置32M作为系统主时钟
    While(CLKCONSTA & 0x40);//读CLKCONSTA的第6位为0 表示32M的时钟源已经作为当前的系统时钟
    

    串口

    串口配置步骤:

    • 指定串口的IO位置
    • 相应IO配置成外设功能
    • 8个数据为、1个停止位、无流控、无校验
    • 设置波特率
    • 开CPU中断、对应串口接收中断

    32Mhz时钟下常用波特率UOGCR 、UOBAUD 值
    在这里插入图片描述

    Example

    配置串口0的备用位置1配置成波特率115200

    PERCFG &=~0x01; // 指定串口的IO位置(选中串口0的备用位置1 P0_3 P0_2)
    P0SEL |= 0x0C; //0000 1100 相应IO配置成外设功能
    UOCSR |= 0xC0; //8个数据为、1个停止位、无流控、无校验
    
    UOGCR = 11;  
    UOBAUD = 216; //波特率设置为115200
    
    URX0IE = 1;
    EA = 1; //开启中断
    
    

    串口中断函数

    #pragma vector = URX0_VECTOR
    __interrupt void URX0_ISR(void)
    {
    	char Ch;
    	URX0IF = 0; //(来数据硬件置1)清除串口接收中断
    	Ch = U0DBUF; //取出数据
    	U0DBUF =  Ch; //写数据
    	While(UTX0IF == 0);//等待发送完成
    	UTX0IF = 0;
    }
    
    

    协议栈中串口的使用

    第一步:修改宏
    在这里插入图片描述

    如果要使用串口0将宏修改为ZTOOL_P1
    如果要使用串口1将宏修改为ZTOOL_P2

    第二步初始化串口

      halUARTCfg_t uartconf;     //串口0配置
      uartconf.baudRate = HAL_UART_BR_115200; //波特率
      uartconf.callBackFunc = Handle_UartEvent; //回调函数
      uartconf.configured = TRUE; //配置
      uartconf.flowControl = FALSE;	//流控制关
    
      uartconf.flowControlThreshold = 64;
      uartconf.idleTimeout = 6;             // 6ms后串口空闲则发送串口空闲事件,参数不可设为0
      uartconf.rx.maxBufSize = 128;			//接收缓冲区大小
      uartconf.tx.maxBufSize = 128;			//发送缓存区大小
      uartconf.intEnable = TRUE;			//使能
      HalUARTOpen(HAL_UART_PORT_0, &uartconf); //将代码放在void GenericApp_Init( uint8 task_id )函数末尾即可(即应用层初始化函数)
    

    Tips:上述代码为配置串口0,配置串口1只需将HAL_UART_PORT_0改为HAL_UART_PORT_1即可,但这里需明白协议栈串口0默认配置是在备用位置1(P0_3 P0_2),而串口1默认配置是在备用位置2(P1_6 P1_7)
    串口0的位置2为(P1_5 P1_4)串口1位置1为(P0_4 P0_5)

    这是协议栈中的源代码如下
    在这里插入图片描述
    所有例如我需要将串口1设定在备用位置1我的方面如下(仅供参考):

      halUARTCfg_t uartconf;
      uartconf.baudRate = HAL_UART_BR_115200;
      uartconf.callBackFunc = Handle_UartEvent;
      uartconf.configured = TRUE;
      uartconf.flowControl = FALSE;
      uartconf.flowControlThreshold = 64;
      uartconf.idleTimeout = 6;             // 6ms后串口空闲则发送串口空闲事件,参数不可设为0
      uartconf.rx.maxBufSize = 128;
      uartconf.tx.maxBufSize = 128;
      uartconf.intEnable = TRUE;
      PERCFG&=~0x02;   //有2个备用位置,0使用备用位置1;1使用备用位置2
      P0SEL |= 0x30;   //P0_5 RXD P0_4 TXD 外设功能 0011 0000
      HalUARTOpen(HAL_UART_PORT_1, &uartconf);
    

    做法就是直接配置寄存器 PERCFG重新选的备用位置即可

    展开全文
  • 串口的驱动直接编译在内核中,当需要修改串口时钟频率和波特率的时候, 需要修改以下地方。 1、在板子平台目录下平台相关的头文件路径下串口的头文件中,即arch/arm/mach-***/include/mach/ns16550.h中修改以下宏...

    本人使用的内核版本为linux-2.6.32,采用的ARM处理器为cortex-A8,采用的串口为NS16550。串口的驱动直接编译在内核中,当需要修改串口的时钟频率和波特率的时候, 需要修改以下地方。

    1、在板子平台目录下平台相关的头文件路径下串口的头文件中,即arch/arm/mach-***/include/mach/ns16550.h中修改以下宏定义即可修改串口的时钟频率

    #define CONFIG_SYS_NS16550_CLK        50000000

    2、在板子平台目录下的设备文件路径下的串口设备.c文件中,即/arch/arm/mach-***/dev-uart.c中修改以下的宏定义即可修改串口时钟频率

    #define UART_CLK 50000000

    3、内核的波特率是通过uboot的bootargs传递过来的。


    展开全文
  • uboot中串口时钟频率及波特率的设置

    千次阅读 2017-01-18 19:48:28
    本人使用的uboot版本为uboot2012,采用的串口是NS16550,在include/configs/***.h(即板子对应的config文件)中,添加了以下配置选项: /*NS16550 Configuration*/ #define CONFIG_SYS_NS16550 #define CONFIG_SYS...
  • Analog Devices, Inc.,全球领先的高性能信号处理解决方案供应商,最近推出一款高性能时钟抖动衰减器HMC7044,其支持JESD204B串行接口标准,适用于连接基站设计中的高速数据转换器和现场可编程门阵列(FPGA)。...
  • 还有别的: MSP430 F5529 单片机 时钟 闹钟 倒计时 OLED: ...MSP430 F5529 单片机 模拟时钟 万年历 数字时钟 OLED: ...MSP430 F5529 单片机的 串口实验:https://blog.csdn.net/x1131230123/art
  • 基于STM32的RTC的时钟程序(串口显示时钟,并且带可调闹钟)
  • 数字时钟串口程序 8051单片机 c语言程序 可以实现时钟串口传送。
  • 1.CC2530在正常运行的时候需要一个高频时钟信号和一个低频时钟信号 高频时钟信号主要供给CPU保证程序运行;低频时钟信号主要供给看门狗、睡眠定时器等片上外设。 2.时钟信号的来源 高频时钟信号有2个,芯片内部的16M...
  • SPI时钟极性、时钟相位及片选

    千次阅读 2017-04-18 10:27:20
    根据串口时钟SCLK的相位SCPH和极性SCPOL的不同,有 4 种组合。 1、在主设备处于不使能或者空闲的状态下,主设备输出的从设备选择信号CS保持高电平。 2、时钟极性SCPOL参数决定串口时钟SCLK 在无效的状态下是高电平...
  • MDK5.1版本 串口温度显示,LED数码管显示时钟
  • tq210 时钟串口

    2014-02-20 15:16:40
    TQ210的系统时钟配置和串口配置非常简单,本文从TQ210的系统时钟配置开始讨论。 TQ210的时钟配置跟2440/6410的时钟配置差不多,只是锁相环的个数略有不同,配置步骤是一样的。配置系统时钟,无非要经过以下几个...
  • 请问大神们如何在这个程序里添加串口来改变时钟啊 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ //此表为 LED 的字模, 共阴数码管 0-9 - uchar code ...
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    万次阅读 多人点赞 2019-08-08 15:42:35
    时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为什么 STM32 ...
  • 串行接口(UART)------verilog实现串口发送模块

    万次阅读 多人点赞 2018-11-19 12:08:06
    前面一篇博客实现已经分析并实现串行接口的接收模块。其中,串口的波特率对串口来说是一个比较重要的概念,因为其决定了接收或者发送一位数据所用的时间。由于FPGA所用的时钟通常远比串口的波特率快,所以在使用FPGA...
  • ZigBee-时钟源切换-串口配置 高频时钟源切换步骤: 用到的寄存器:SLEEPCMD,SLEEPSTA,CLKCONCMD,CLKCONSTA 1.让两个高频时钟源同时起震,让SLEEPCMD的第2位=0(把没用的时钟源关掉) 2.等待目标时钟源震荡稳定,...
  • 可以通过独立按键修改时钟 也可以通过串口通讯修改接收时间 已经测试并且成功
  • FPGA 串口波特率时钟的概念

    千次阅读 2020-06-18 08:42:27
    一 : 串口波特率等概念,115200等到底什么意思 1:比特率:9600bps 、115200bps 就是每秒中传输9600bit、115200bit,也就是相当于每一秒中划分成了9600等份。 9600bps:那么每1bit的时间就是1/9600秒=104....
  • 其他创新项目:RTC实时时钟 通过RTC将当前时间通过串口调试工具显示出来
  • STM32F030F4P6处理器程序 的小程序,采MCU内部时钟串口功能正常,LED正常闪烁。直接可运行,实用前请确认LED灯IO口与程序内是不是对应。
  • 串口UART0显示时钟

    千次阅读 2016-12-04 00:51:56
    #include #define rled P1_0 #define gled P1_1 /*变量定义和赋值*******************************/ char time[3]={10,44,55}; //时间初值 ... //串口接收到的数据 char senddata[10]="00:00:00 
  • 串行接口(UART)------verilog实现串口接收模块

    万次阅读 多人点赞 2018-11-15 15:08:35
    串行接口(Serial port),主要用于串行式逐位数据传输。常见的有一般计算机应用的RS-232(使用 25 针或 9 针连接器)和工业计算机应用的半双工RS-485与全双工RS-422。----------维基百科 按照电气标准划分,串口...
  • FPGA串口波特率与系统时钟频率关系

    千次阅读 2020-02-24 10:23:29
    FPGA串口波特率与系统时钟频率关系 FPGA主板频率是50Mhz,T=20ns 9600波特率指的是9600bps,9600bit/s 然后周期是1/速率 = 1/9600 = 1.0416666667*...
  • 前面说到了UART,也就是串口发送模块,串口发送模块两个主要组件之一即为波特率时钟生成模块,这里需要 计算出系统时钟计数值与波特率之间的关系: FPGA主板频率是50Mhz,T=20ns 9600波特率指的是9600bps,9600...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,774
精华内容 26,709
关键字:

串口时钟