串口

MSP430F149的串口RS232接口

冷暖自知 提交于 2020-03-08 16:15:10
1、 概述 具有同步串口模式(SPI),异步通信模式(UART)。 作异步通信时,P3.4,P3.5,P3.6,P3.7第二功能分别是UTXD0, URXD0, UTXD1, UTXD2 2、 使用方法概述 2.1 程序架构 配置寄存器设置工作模式 { 设置IO口为第二功能作为串口收发引脚; 使能串口收发功能; 选择每帧数据位为7或8; 选择波特率发生器时钟源; 配置波特率(查表得出值再配置UxBR0, UxBR1,UxMCTL); 软件清除串口复位位(SWRST); 若采用中断方式则使能接受、发送中断 } 编写接受/发送程序,可采用查询方式或中断方式。同51单片机不同的是,UTXIFG,URXIF在发送下一个数据和读取数据时被自动清零了,无需软件清除。 2.2 细节描述 配置波特率时用户手册上有速查表,如下 设置波特率时要选择合适的时钟源。对于较低的波特率(9600b/s及以下),可选ACLK,大于9600要选用SMCLK,因为串口波特率发生器分频系数要求大于3。UxBR0(低)UxBR1(高)值的计算式为:选择的时钟源/波特率,再取整。为了精确,MSP430设置了小数分频功能,通过UxMCTL来完成。 3、相关寄存器 1.ME1, Module Enable Register 1 UTXE0 Bit 7 USART0 transmit enable. This bit

第五章 嵌入式Linux应用开发基础(1)

早过忘川 提交于 2020-03-08 13:02:41
5.1 快速入门总体介绍 参考视频P38,截取了2张图。 图5.1快速入门学习内容​​​​​ 图5.2快速入门路线 到这里初学者路线在线wiki结束了,后面的视频每一节都对应一个讲课文档,先看下讲课文档,然后在参考在线wiki,完全开发手册, https://book.100ask.org/index.html 。 5.2 HelloWorld 背后没那么简单 P39时长18:31,但是讲了好多内容,需要前期准备,按照视频操作,每1s都包含信息量,之前看一下视频一般都要1.25的倍速,现在看韦老师视频得慢速看,要不然跟不上节奏。 先把准备工作做了,Ubuntu和开发板互ping、配置NFS服务、配置交叉编译工具。 5.3 Win10、Ubuntu和开发板互ping 使用串口连接开发板和PC,打开MobaXterm,启动开发板,具体可以参见3.2章节。 先看下Ubuntu的ip,ifconfig 图5.1 Ubuntu IP 使用网线一端连接路由器,一端连接开发板网口,板子上有2个网口,应该都可以的,查看下开发板的ip,如图5.2。 图5.2 板子IP 验证下开发板和Ubuntu是否连通,ping 192.168.1.5,看到图5.3中板子和Ubuntu在传输数据,说明已经互通,Ctrl+C退出。 图5.3 板子和Ubuntu互通 理顺了一下三者之间的网络连接情况,图5.4

C#实现串口监听

为君一笑 提交于 2020-03-08 06:14:50
Visual Stdio 2005中,对于串口操作Framework提供了一个很好的类接口-SerialPort,在这当中,串口数据的读取与写入有较大的不同。由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取。 1.用线程实时读串口 2.用事件触发方式实现。 但由于线程实时读串口的效率不是十分高效,因此比较好的方法是事件触发的方式。在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。 此外,SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程中的显示数据控件直接进行数据传输,必须用间接的方式实现。 一.创建WIndow项目,设计界面 二,编写实现代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO

Arduino学习笔记(17)-- Linux & Arduino 串口问题解决

故事扮演 提交于 2020-03-07 19:38:11
1. Serial port不能识别 https://blog.csdn.net/qq_24254419/article/details/62241770 步骤1 解决方法是:插上你的arduino到电脑的USB上,并 确保虚拟机软件中识别并将该串口添加至虚拟设备中 ,在命令行里运行: dmesg | tail 结果如下: 在最后一行显示了该Arduino的串口编号: ttyUSB0 步骤2 命令行执行 ls -l /dev/ttyUSB0 //这个0就是上面检测到的 这个” dialout” 名字就是下面我们要用到的组名。 步骤3 以上的 命令均是在 没有root时候键入的 ,到了这一步,进入root权限(键入 su 进入) sudo su usermod -a -G dialout name //这里的name是自己电脑用户的名字 步骤4 再键入 ls -ld /run/lock 然后出现以下字样: drwxrwxrwt5 root root 4096 9 dic 21.39 /var/lock 步骤5 运行root下的 chmod +rwx /run/lock 步骤6 在ubuntu下,预置安装了一个叫brltty的程序与Arduino有冲突,卸载即可。这个东西是为盲人设计的,所以大可放心卸载,没有什么问题。卸载完重启电脑。 sudo apt-get remove

基于Mips架构linux下设备树串口驱动(一)

懵懂的女人 提交于 2020-03-05 06:40:58
本设备树串口驱动基于linux3.0.4内核版本 start kernel() 从start kernel函数开始追踪,函数原型如下,函数实体路径见./init/main.c。可以看到该函数实体包含两个有关于串口初始化函数的调用实体,第一个是early_printk函数实现,第二个是标准设备树串口驱动实现,下面本文将会逐步进行追踪分析。 asmlinkage void __init start_kernel ( void ) { . . . . . . . . . . . . . setup_arch ( & command_line ) ; . . . . . . . . . . . . . console_init ( ) ; . . . . . . . . . . . . . } setup_arch() 首先,追踪分析early_printk初始化调用流程,继续追踪setup_arch()函数实体,函数原型如下,函数实体路径见./arch/mips/kernel/setup.c。第一个函数功能是探测cpu属于什么架构,常见有arm/mips/x86架构,本文剖析是基于探测mips架构。第二个函数功能是解析boot传参环境变量与命令行,初始化linux操作系统环境变量。第三个函数就是本文重点关注setup_early_printk()函数实体,即串口早期的打印初始化流程。

Qt windows端的蓝牙串口服务

时光毁灭记忆、已成空白 提交于 2020-03-04 15:48:56
Qt windows端的蓝牙串口服务 环境 系统 Qt 蓝牙模块 使用步骤 蓝牙模块参数获取 配对 扫描、连接、数据收发 扫描 连接 数据收发 环境 系统 只测试过自己电脑,系统版本如下: 查看方式按 win+R ,然后输入 winver 确定即可: 查看设备管理器,确定自己电脑是否支持蓝牙模块: Qt 需要选择MSVC版本编译,MinGW不支持Windows下的蓝牙模块,这也就限制了Qt的版本(早期有些版本没有MSVC编译器),本文使用的是 Qt 5.12.6 MSVC2017 64bit 。 蓝牙模块 电脑端作为主机,蓝牙模块作为从机,测试用的是在某宝买的蓝牙模块: 使用步骤 蓝牙模块参数获取 使用USB转串口模块和蓝牙模块按如下连接: 电脑端打开串口助手,连接USB转串口模块的端口,默认波特率是9600: (网络截图) 配对 双击电脑的右下角的蓝牙图标: 如果右下角没有,如下也可以找到: 在本文的上面一点有提到如何修改蓝牙名字,和PIN码,配对时就需要用到PIN码: 输入后点击连接即可配对成功: 扫描、连接、数据收发 新建工程,在 .pro 加入 bluetooth : 扫描 头文件主要代码: #include < QBluetoothDeviceInfo > #include < qbluetoothdevicediscoveryagent . h > private

win10电脑接串口或者U盘导致鼠标跳屏问题解决

烈酒焚心 提交于 2020-03-03 08:19:04
我用的win10电脑,电脑设备连接了外接显示器、USB串口设备,发现有时候插U盘都会导致屏幕鼠标乱窜,鼠标用的蓝牙连接。 然后就查了一下鼠标驱动,禁用了下面红色框中的驱动(可看到已经禁用),禁用后小红帽和鼠标都可以用,跳屏问题也解决了,对于这块也不太熟悉,不知道是否其它环境什么情况,作为参考吧。 来源: CSDN 作者: smile_cctv 链接: https://blog.csdn.net/smile_cctv/article/details/104606335

51单片机-串口-串口发送显示

元气小坏坏 提交于 2020-03-03 08:07:38
51单片机-串口-串口发送显示 1. 视频 bilibili视频地址: https://www.bilibili.com/video/av92932152 51单片机-串口-串口发送显示 2. 文件 文件下载链接: https://download.csdn.net/download/weixin_43130546/12203484 3. 串口 PCON 电源管理寄存器 SCON 串口控制寄存器 模式&波特率 (宋雪松P183) SCON主要用模式1,的波特率 对应的,要用定时器T1&T2的模式2 TH1 = TL1 = 256 - 晶振值/12/2/16/波特率 (256是TL1的溢出值,12指12个时钟周期,16是硬件因素) SBUF 两个SBUF寄存器,分别负责接收和发送缓冲 4. 串口配置代码 EA = 1 ; void ConfigUART ( unsigned long baud ) { TH1 = 256 - ( 11059200 / 12 / 32 ) / baud ; TL1 = TH1 ; SCON = 0x50 ; TMOD & = 0x0F ; TMOD | = 0x20 ; ET1 = 0 ; ES = 1 ; TF1 = 0 ; TR1 = 1 ; } void InterruptUART ( void ) interrupt 4 { if ( RI )

串口中断服务函数

a 夏天 提交于 2020-03-03 01:48:53
串口中断服务函数详解 void USART1_IRQHandle(void) //串口1中断服务程序 { u8 Res; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART1); //读取接收到的数据 if((USART_RX_STA&0x8000)==0)//接收未完成(判断USART_RX_STA的第15位是否为0,不为0时说明Res!=oxoa即接受没完成) { if(USART_RX_STA&0x4000)//接收到了0x0d,当if(Res==0x0d)USART_RX_STA|=0x4000;才执行该语句,“此次”的执行中断服务函数Res接受最后一个字符,正常情况下Res=oxoa) { if(Res!=0x0a)USART_RX_STA=0;//(如果Res!=0x0a)接收错误,重新开始 else USART_RX_STA|=0x8000; //(Res=0x0a接收完成了,USART_RX_STA的第15位为1) } else //还没收到倒数第二个字节0X0d { if(Res==0x0d)USART_RX_STA|=0x4000;//如果接收到了倒数第二个字节0X0d,令USART_RX

UART接口控制器

我的未来我决定 提交于 2020-03-03 01:08:24
主设备与从设备通过总线来进行数据通信,是一个数字系统不可或缺的一部分,本篇讲述一种常见的总线控制器UART串行数据接口,也称为串口。 串口的标准一般有,RS-232、RS-422与RS-485标准,我们讲述的是RS-232接口信号。 1、接口信号定义 RS-232最常见的是9脚接口 表1-1:RS-232接口定义 在实际的应用中,我们只需要关注两个接口,数据接收(RXD)和数据发送(TXD),而其他的接口不需要理会。 串口的时序如图1-1所示: 结合时序图我们说明以下,串口收发数据的过程。在没有需要发送的数据时,接口的电平为高。在需发送的数据到达之前,先会有一个低电平的起始位。而后开始发送数据,而后会发送校验位,最后是停止位。结束后恢复高电平,等待下一个传送周期的起始位出现。 所以我们可以画出一个简单的收发结构图,如图1-2所示: 2、发送模块的设计 当数据准备好时,start信号为高电平,数据并行输入内部寄存器中,等时钟周期来了之后由低位到高位串行发送,代码如下: module UART ( clk , rst , start , data_in , TXD ) ; parameter fst_bit = 1 'b0 ; //开始位为低电平 parameter last_bit = 1 'b0 ; //传输结束信号 input clk , rst ; input start ;