NEC V850 之 串口通信(UART4).dot.doc_第1页
NEC V850 之 串口通信(UART4).dot.doc_第2页
NEC V850 之 串口通信(UART4).dot.doc_第3页
NEC V850 之 串口通信(UART4).dot.doc_第4页
NEC V850 之 串口通信(UART4).dot.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

搞一个芯片如果不搞串口总是感觉缺点什么,这段时间搞v850系列的32位MCU,基本程序差不多就到串口就截至了,下面就是要弄CAN和系统了。这次的串口的程序还是把接收的字符再发送出去。之前先说明几点1 系统时钟,设置系统时钟输出脚输出,方便测量目前的系统时钟,有了准确的时钟才能计算波特率等信息。2 波特率计算方式,根据寄存器UDnCTL1和UDnCTL2来计算,见下图 举个例子:如果串口的总线时钟和系统时钟一致为32MHz,我们需要115200bps的波特率,下面算出UDnCTL2寄存器的值(即K值),可以得到一个方程为115200bps = 32MHz / 2*k ,可以求的 k = 138.888 ,取值138或者139。可见通信是有误差的。只要是误差量足够小就不足为虑,不要进行连续的大数据传输问题就不会很大。下面来计算下误差率,如果取值为138的话,则通信波特率可以由 32MHz / (2*138) = 115942.0289855072 bps ,误差率为(115942.02899 / 115200) - 1)* 100 = 0.644%。下面是代码部分了 串口接收中断屏蔽寄存器 UD4RIC 串口控制寄存器0 UD4CTL0 串口控制寄存器1 UD4CTL1 串口控制寄存器2 UD4CTL2 时钟选择控制寄存器3 SELCNT3 - ISEL34 串口状态寄存器 UD4STR - UD4TSF 串口发送数据寄存器 UD4TX 串口接收数据寄存器 UD4RX程序上操作:串口初始化,串口使能,串口禁止,串口查询发送一个字符,串口中断接收一个字符。 串口初始化3 禁止串口发送,接受及运行;4 关闭接收中断,清接收中断标志;5 设置中断优先级;6 设置串口波特率;7 设置串口时钟;8 设置串口数据帧属性;9 设置串口RXD,TXD端口属性。 串口使能10 使能串口接收中断,清接收中断标志位;11 使能串口发送,接收及运行标志位。 串口禁止12 禁止串口发送,接收及运行;13 禁止串口的三种中断源。 串口查询发送一个字符 串口中断接收一个字符下面是具体的代码了。代码出处:main.c#include #include #include system.h#include Uart.hvoid main( void )SystemClkInit(); / 初始化系统时钟为32MHz /* CLKOUT pin set */PMCCM |= 0x02; / 设置系统时钟输出引脚使能,输出值为系统时钟(32MHz) _DI(); / 关闭总中断UARTD4_Init(); / 初始化串口4_EI(); / 打开总中断 UARTD4_Start(); / 使能串口4应用while (1); 代码出处:Uart.c#include Uart.h/* Function Name : UARTD4_Init* Description : 串口4初始化* Input : None* Output : None* Return : None*/void UARTD4_Init( void )UD4TXE = 0; /* disable transmission operation(uartd4) */UD4RXE = 0; /* disable reception operation(uartd4) */UD4PWR = 0; /* disable UARTD4 operation */ UD4RMK = 1; /* INTUD4R interrupt disable */UD4RIF = 0; /* clear INTUD4R interrupt flag */ UD4RIC |= 0x07; / 设置接受中断优先级为最低优先级 UD4CTL1 = UARTD_BASECLK_FXP1_1; / 设置串口4的时钟为系统时钟32MHz,不分频UD4CTL2 = 138; / 设置波特率为 115200 bps,计算公式见datasheet 573页ISEL34 = 0; / 设置串口4的时钟选择为fXP1,见datasheet 220页UD4CTL0 = UARTD_TRANSFDIR_LSB | UARTD_PARITY_NONE | UARTD_DATALENGTH_8BIT | UARTD_STOPLENGTH_1BIT; / 设置数据帧格式为 从低位开始,无奇偶效验位,8位数据位,1位停止位/* UARTD4 TXDD4(P915) pin set */ / 设置端口为第二功能模式,配置关系见datasheet 138页PFC9H_bit.no7 = 1;PFCE9H_bit.no7 = 1;PMC9H_bit.no7 = 1; /* UARTD4 RXDD4(P914) pin set */PFC9H_bit.no6 = 1;PFCE9H_bit.no6 = 1;PMC9H_bit.no6 = 1;/* Function Name : UARTD4_Start* Description : 串口4使能* Input : None* Output : None* Return : None*/void UARTD4_Start( void )UD4RIF = 0; /* clear INTUD4R interrupt flag */UD4RMK = 0; /* INTUD4R interrupt enable */ UD4PWR = 1; /* enable UARTD4 operation */UD4TXE = 1; /* enable transmission operation(uartd4) */UD4RXE = 1; /* enable reception operation(uartd4) */* Function Name : UARTD4_Stop* Description : 串口4禁止* Input : None* Output : None* Return : None*/void UARTD4_Stop( void )UD4TXE = 0; /* disable transmission operation(uartd4) */UD4RXE = 0; /* disable reception operation(uartd4) */UD4PWR = 0; /* disable UARTD4 operation */ / 关闭3个中断源UD4TMK = 1; /* INTUD4T interrupt disable */UD4TIF = 0; /* clear INTUD4T interrupt flag */UD4RMK = 1; /* INTUD4R interrupt disable */UD4RIF = 0; /* clear INTUD4R interrupt flag */UD4SMK = 1; /* INTUD4S interrupt disable */UD4SIF = 0; /* clear INTUD4S interrupt flag */* Function Name : UART4_SendChar* Description : 串口4发送一个字符* Input : 要发送的字符* Output : None* Return : None*/void UART4_SendChar(unsigned char word)if(UD4STR & 0x80) = 0) UD4TX = word;UD4TIF = 0; / 使用的是查询方式发送串口数据,但是相应标识为会置位,这里为了保存代码完整性/* Function Name : MD_INTUD4R* Description : 接收中断服务函数* Input : None* Output : None* Return : None*/#pragma vector = INTUD4R_vector_interrupt void MD_INTUD4R(void)volatile unsigned char rx_data; rx_data = UD4RX;UART4_SendChar(rx_data); UD4RIF =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论