1.首先先介绍一下USCI模块

通用串行通信接口(USCI)模块支持多种异步通信模式。不同的 USCI 模块支持不同的模式。

每一个 USCI 模块以不同的字母命名。例如,USCI_A 不同于 USCI_B 等等。如果不止一个相同的USCI 模块被安装在一个设备上,这些模块以不同的数字命名。例如,一个设备有两个 USCI_A模块,它们可以命名 USCI_A0 和 USCI_A1。参见设备明细表去确定各种 USCI 模块,如果需要,它们可以安放在任何设备上。

USCI_Ax 模块支持:

UART 模式

脉冲调整的 IRDA 通信

自动波特率检测的 LIN 通信

SPI 模式

USCI_Bx 模块支持:

I2C 模式

SPI 模式

2. USCI介绍:UART

在异步模式中,USCI_Ax 模块是通过两个外部引脚连接 MSP430 到外部系统,分别是 UCAXRXD和 UCAXTXD。当 UCSYNC 位被清零时 UART 模式被选择。

在 UART 模式下,USCI 的发送和接收字符每次一位的异步速率到另一个设备。字符传输的

时间取决于 USCI 的波特率选择。传输和接收功能使用相同的波特率。

3 . USCI 初始化和复位

USCI 在 PUC 后或者通过设置 UCSWRST 位。在 PUC 后,UCSWRST 位自动置位,保持 USCI 在复位状态。当置位时,UCSWRST 位复位 UCAXRXIE,UCAXTXIE,UCAXRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位并置 UCAXTXIFG 位。清除 UCSWRST 位释放 UCSI 的操作。

注解:初始化或者从新配置 USCI 模块

相应的 USCI 初始化/重配置的过程如下:

设置 UCSWRST

UCSWRST=1 时初始化所有的 UCSI 寄存器(包括 UCAXCTL1)

配置端口

软件清除 UCSWRST

通过 UCAXRXIE 和/或 UCAXTXIE 允许中断(可选)

由于硬件原理图为

/*************************************************

函数名:USCI_A1_UART_init

函数功能:初始化串口

函数参数:无

函数返回值:无

说明:p4.4为TX_485  p4.5为RX_485

*************************************************/

//初始化串口A1

void USCI_A1_UART_init(void)

{

DRE485_out;

P4SEL |= BIT4 + BIT5;                       //p4.4为TX_485  p4.5为RX_485

UCA1CTL1 |= UCSWRST;                        //reset复位

UCA1CTL1 |= UCSSEL__ACLK;                   // CLK = ACLK 驱动时钟选择ACLK

UCA1BR0 = baud_l;                           //波特率为9600bps

UCA1BR1 = baud_h;

UCA1MCTL = UCBRS_3+UCBRF_0;                 //微调寄存器

UCA1IFG &= ~UCRXIFG;                        //RX中断未决

UCA1CTL1 &= ~UCSWRST;                       //初始化UART状态机

UCA1IE |= UCRXIE;                           //RX使能

}

#define CPU_F ((double)8000000)

#define baud           9600                                //设置波特率的大小

#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特 率计 算公 式

#define baud_h         (uchar)(baud_setting>>8)            //提 取 高 位

#define baud_l         (uchar)(baud_setting)               //低位

#define DRE485_out     P4DIR |= BIT6     //连接485芯片的DE,RE端口的IO设置为输出状态

4.发送和接收

UCRXBUFx 0-7 位 接受数据缓存被用户直接使用,包含从接收移位寄存器接收的最后一个字

符。读 UCAXRIFG 复位接收误差位,即 UCADDR 或 UCIDLE 位以及 UCAXRXIFG。在 7 位数据模式中,UCAXRXBUF 通过 LSB 调整使 MSB 总是复位。

UCTXBUFx 0-7 位  发送数据缓存被用户直接使用,保持数据到移出发送移位寄存器并发送到

UCAXTXD 上。写到发送数据缓存可清除 UCAXTXIFG。UCAXTXBUF 的 MSB 在 7 为数据时候不使用保持复位。

/*************************************************

UART_A1_sendData

函数功能:串口A1发送字符串数据

函数参数:Point:传入的字符串  CountTemp:数据数量

函数返回值:无

说明:

*************************************************/

void UART_A1_sendData(unsigned char *Point,unsigned int CountTemp)

{

DE485;

while(CountTemp>0)

{

UCA1IFG &= ~UCTXIFG;

UCA1TXBUF = *Point;

while((UCA1IFG & UCTXIFG) == 0);

Point++;

CountTemp--;

}

}

//*************************************************************************

// 串口1发送数据函数

//*************************************************************************

void Send_Byte(uchar data)

{

DE485;

while(!(UCA1IFG&UCTXIFG));             //发送寄存器空的时候发送数据

UCA1TXBUF=data;

//RS485_CTR0;

}

//*************************************************************************

//              串口1发送字符串函数

//*************************************************************************

void Print_Str(uchar *s)

{

while(*s != '\0')

{

Send_Byte(*s++);

delay_ms(2);

}

}

//*************************************************************************

//               处理来自串口1的接收中断

//*************************************************************************

#pragma vector=USCI_A1_VECTOR

__interrupt void UART1_RX_ISR(void)

{

uchar data=0;

data=UCA1RXBUF;                       //接收到的数据存起来

Send_Byte(data);                    //将接收到的数据再发送出去

delay_ms(5);                        //切换之前先有个小延时

RE485;                         //切换到接收状态

}

个人总结之MSP430F5510串口通讯(485)相关推荐

  1. java 连接 usb串口_树莓派 3 java usb串口通讯485

    0 参考链接 https://blog.csdn.net/qq_43725844/article/details/97682424 https://blog.csdn.net/fhqlongteng/ ...

  2. 485串口驱动_电工进阶PLC大神,必备PLC串口通讯的基本知识

    电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 1,什么是串口通讯? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 ...

  3. Hali硬件安全工具-串口通讯RS232/485/422/CAN抓包

    1.场景需求 我发现我的CSDN的优点之一就是,每篇文章都有讲清楚起因,平白无故的技术学习是没有根的,没有落地的场景,没有技术的应用,技术本身就是昙花一现. 这次的分享,是Hali硬件安全工具的第一次 ...

  4. ESP32 (UART 485通讯)-串口之485通讯(3)

    提示:本博客作为学习笔记,有错误的地方希望指正 文章目录 一.ESP32串口介绍 二.硬件设计 三.实现代码 四.串口实验演示结果 五.ESP32串口函数API 5.1.uart_types.h文件中 ...

  5. 串口 发送 接收 高位_电工进阶PLC大神,必备PLC串口通讯的基本知识!

    戳上方蓝字"技成电工课堂"快速关注!!! 电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗?1,什么是串口通讯? ...

  6. plc和pc串口通讯接线_让你搞懂PLC串口通讯和通讯接口,这东西估计没几个能说清楚~...

    电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 1,什么是串口通讯? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 ...

  7. 串行口方式二 波特率_一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项...

    串行通信是数据处理设备和外围设备之间最广泛使用的信息传输方法.每个设备可能是您的个人电脑或移动设备在运行串行协议.该协议是一种安全可靠的通信形式,由源主机(发送方)和目的主机(接收方)制定一套规则.为 ...

  8. 如何在ubuntu上用c++串口通信_让你搞懂PLC串口通讯和通讯接口,这东西估计没几个能说清楚~...

    电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 1,什么是串口通讯? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 ...

  9. vb中多个串口通讯_串口服务器的原理及应用!

    串口服务器是将来自TCP/IP协议的数据包,解析为串口数据流:反之,也可以将串口数据流打成TCP/IP协议的数据包,从而实现数据的网络传输. 它能多个串口设备连接并能将串口数据流进行选择和处理,把现有 ...

最新文章

  1. 【动态规划】状态机模型
  2. ajax技术运用案例,第12篇:Ajax技术与项目案例
  3. 一次zabbix的渗透
  4. ContextLoaderListener.contextInitialized - how is WebApplicationContext created
  5. 小说中场景的功能_场景在小说中的作用
  6. 如何让webpack打包的速度提升50%?
  7. Cannot delete or update a parent row: a foreign key constraint fails
  8. C语言程序运行闪退解决方案
  9. 安装IAR ewarm
  10. 业余无线电通信_业余电台操作证书查询方式
  11. Java可以加速播放的播放器,基于live555的rtsp播放器之十二:使用soundtouch加速音频播放...
  12. android的混淆器
  13. MATLAB图像处理实验——细胞图像的分割和计数
  14. 【HLA】初识HLA/RTI
  15. 全国软件工程专业大学排名!你报考的大学排第几?
  16. tomcat10 实例化servlet 500错误解决办法
  17. 风云滚滚唱英雄,云的江湖谁做主?
  18. 数字逻辑复习(Wust)
  19. 英语测试题库软件,英语考试app哪个好 英语考试题库app推荐_96u手游网
  20. mysql数据库全局搜索_数据库全局搜索

热门文章

  1. SpringCloud Alibaba实战第八课 缓存设计、网关认证、重构策略
  2. shapefile格式(援引)
  3. 技术社区、相关论坛推荐汇总(持续更新)
  4. oracle-04045,8170导出(exp)数据报错ORA-04045错误
  5. Jmockit 静态方法mock
  6. image-conversion压缩图片
  7. 游戏服务器多钱一个月呢?
  8. 图片添加文字水印,自动换行,左右留白
  9. Linux下BMP图片添加水印
  10. 数值微分:导数,偏导