精华内容
下载资源
问答
  • 在灯具调光控制中,人们大量采用了DMX512 控制协议,它是由美国剧 场技术协会(United State InsTItute for Theatre Technology,Inc)于1986 年8 月提出一个能在一对线上传送512 路可控硅调光亮度信息标准。...

    在灯具调光和控制中,人们大量采用了DMX512 的控制协议,它是由美国剧 场技术协会(United State InsTItute for Theatre Technology,Inc)于1986 年8 月提出的一个能在一对线上传送512 路可控硅调光亮度信息的标准。 DMX512 通信方式是采用了异步通信格式,每个调光点由11 位组成,其中一个 是起始位,8 位调光数据,两个停止位。每一次传输能512 个调光点。

    1. DMX512 控制协议及其改进

    与DMX512 兼容的灯具一般使用一颗单片机来实现DMX512 的解码。如使用8051 或者Microchip 公司的PIC16F628A 等。单片机内部的程序要读取一组DIP 开关 SDMX5124 APPLICATION NOTES DOC NO:051201设置的地址,根据自己的地址,去接收DMX512 数据中的第几个字节,然后来实 现调光的功能。如果一个灯中要使用多个调光数据,该灯要占用多个地址。

    DMX512 的接口

    DMX512 电气特性为RS485 接口,物理接口为CANON 三芯或5 芯接口,采 用级联方式联结。因此有一个输入口,一个输出口。 Pin 1 = signal reference = cable shield Pin 2 = signal inversion = ‘ - ’ Pin 3 = signal = ‘ + ’Pin 4 = opTIonal (e.g. acknowledgment) Pin 5 = opTIonal (e.g. acknowledgment) DMX512 在传统的舞台灯光控制应用中还是能简单实用的,但是,面对新型的LED 灯具来讲,DMX512 显的有点力不从心 了。

    首先,LED灯具要求每个灯具中要有一个控制器,而每个灯要设置地址是很 麻烦的,维修更换也不便。其此,异步的传输方法效率也不高。

    正因为如此,人们也使用LED显示屏的技术来控制LED灯具,通常使用S PI移位寄存器的方法来传送调光数据。这样作的方法省去了地址的设定,靠移 位的先后来确定灯的位置,另一方面,它们的传输速度能很高。

    但是,新的问题又出现了,实现调光数据的移位传输,要使用三根线:SSSCK,和SCK 线。这三根信号线如果以RS485 方式传输时,就变 成了六根线,输入和输出一共要使用12 根线, 这对LED 灯具来讲是太多了。左边是一个使用 这种芯片做的灯。

    SDMX5124 APPLICATION NOTES DOC NO:051201 同步DMX512,SDMX5124 芯片使用了一种同步串行传输的方式,它吸取了DMX512 和SPI 移 位总线两者的优点。

    首先,SDMX512 在电气特性,数据结构方面尽量和DMX512 相同,采用同步 传输的方法来两线移位传输。其次,SDMX512 协议采取了SPI 移位传输的方法来 避免DMX512 协议中要设定地址的问题。 SDM512 协议的速率设定为128KBPS。 左图是采用SDMX512 生产的像素灯,可以看 出灯与灯之间的连线为四根线, DATA+ DATA- +24V GND。如果灯与灯之间的距离不远,不使用RS485, 那么,信号线为三根就可以了。

    2.SDMX512 灯具的设计

    以SDMX512 芯片设计的灯具能接收同步DMX512 调光数据的LED 灯具,它由SDMX5124 控制芯片,LED 光源,电源和外壳等附件组成。

    在这里我们以一个典型的LED 像素灯为例介绍以SDMX512 为主的LED 灯具的设计。

    (1) 光源采用台湾光鼎光电公司的EP2 SMT RGB LED 芯片

    (2) 控制芯片:SDMX5124

    (3) 开关电源芯片

    同步DMX512 控制器的设计

    同步DMX512 控制器能根据LED 灯光控制数据,产生一路或多路SDMX512 控 制信号,控制一路或者多路同步DMX512 控制线,每一路同步DMX512 控制线能 控制512 个同步DMX512 灯具。

    LED 灯光控制数据可以存储在同步DMX512 控制器的FLASH ROM 中,或者在 控制器中增加一个CF 卡或SD 卡,将LED 灯光控制数据存储在其中,同步DMX512 控制器也能够增加一个上位机网络接口,使PC 上位机联机控制灯光系统。 同步DMX512 控制器是以一个CPU 为主的嵌入式系统,我们推荐的系统如下图所示:

    主处理器

    主CPU 使用MicroChip 公司高性能8 位RISC 单片计算机实现,主频为40Mhz. 外扩了16K BYTE 的SRAM 用于存放LED 控制数据。 网络控制器采用RealTek 公司单片10BASE T 控制器其中,sdmx512 transmitter 采用xilinx 9572 CPLD 实现, 控制器软件的编程。

    在SDMX512 参考设计中,控制器由Microchip PIC18F4525 实现,软件系统 包括了TCP/IP 堆栈软件,SD 卡文件系统和LED 驱动部分组成。 主控软件件的主程序主要完成CPU,TCP/IP,SD 卡程序的初始化,然后进入主循环, 如下图所示:

    SDMX512 控制器主程序框图 TCP/IP 堆栈软件

    SDMX5124 APPLICATION NOTES DOC NO:051201

    TCP/IP 堆栈软件包括了MAC,UDP 层软件。 SD 卡文件系统

    colorPixel 控制器软件支持一个SD 卡座,SD 卡的文件格式为FAT16 格式。 LED 驱动程序。

    由两个主要的软件组成,send_it 和中断软件

    LED 的控制数据存放在SBUF 中,由于Microchip 的sram 内存比较小,最大 有6KBYTE,去掉TCP/IP 和SD 文件系统使用的单元,SBUF 的最大长度为6K 左右, SBUF 的大小决定了一根线上最大的灯数, SBUF 长度=4+N*12

    使用时钟信号CLK 的下降延产生PIC18F4525的中断,每次中端发送一位数据(并 行八路)。每一帧发送4+N*12+8 位。 时钟的频率为128KBPS。前四位是引导码(0101),N*12 是灯光控制数据,8 位为停止位。

    软件要控制ENABLE 信号,当开始发送时,ENABLE 为低电平,当发送完4+NX12 位后,ENABLE 为高低电平,延时8 个时钟周期后,开始发送下一帧。

    Send_it 和中断程序源码

    Int16 send_max;//sbuf 长度=4+N*12 位

    Byte cc;//最后一位的状态

    void send_it(void)

    {

    TRISD=0x00;

    PORTD=0xff; PORTD 为8 位数据口

    PORTEbits.RE0=1; // dis rtl8019

    LED_CS=1;

    send_p=0; SBUF 指针

    cc=~ll; send_busy=1;

    INTCONbits.INT0IE=1;

    INTCONbits.GIEH = 1;//开中断

    while(send_busy){};//等待结束

    }

    #pragma code InterruptVectorHigh = 0x08

    void

    InterruptVectorHigh (void)//中断矢量

    DMX5124 APPLICATION NOTES

    DOC NO:051201

    {

    _asm

    goto InterruptHandlerHigh jump to interrupt routine

    _endasm

    }

    #pragma code

    #pragma interrupt InterruptHandlerHigh

    ;中断处理软件

    void InterruptHandlerHigh ()

    {

    if (INTCONbits.INT0IF==1 )//判断是否为外部中断1

    {

    INTCONbits.INT0IF=0;//清除中断标志

    if (send_p ==(send_max+8) ) {INTCONbits.INT0IE=0;send_busy=0;}

    else {if (send_p 》(send_max) ) {ENABLE=1;send_p++;}

    else {ENABLE=0;PORTD=cc;

    ll=cc; cc=sbuf[send_p++];

    }

    };//end of if

    }

    网络

    对于一个大型的LED 灯光系统,可能要使用多个SDMX512 控制器协同控制, 多个SDMX512 控制器要通过网络与PC 机联网,在我们介绍的方案中,推荐使用 标准的10 BASE T 网,因为采用标准的网络,能使用大量经济的标准LAN 产品, 如HUB,交换机等等,它们比专用设备便宜的多。

    PC 联机控制软件

    PC 机上的软件包括三类,

    (1) 灯光照明变化的图形设计软件,这部分软件可以利用WINDOWS 上大量的多媒体设计软件来完成, 如 Dreamwave FLASH 动画设计软件。

    (2) SDMX512 控制数据的转换软件它将图形设计软件产生的数据转换成SDMX512 格式的控制数据

    (3) 联机控制软件。该软件向SDMX512 控制器实时发送SDMX512 控制数据。

    YDS data system 对SDMX512 开发的支持

    (1) colorPixel 像素灯设计

    见<colorPixel schematic>

    (2) colorPixel 控制器参考设计

    包括了demo 板SDMX5124 APPLICATION NOTES DOC NO:051201 逻辑图,GERBER 文件 软件目标码/源代码

    (3) Windows 控制软件

    colorPixel 控制软件完成COLORPIXEL 像素灯控制数据的转换,PC 显示屏图像的实时采集,网 络实时控制。FONTPlace 吸塑字灯光控制软件上述两个软件使用delphi7 编写,在WINDOW2000 和WINDOWS/XP 上运行。

    展开全文
  • 主要内容:串行口结构、串行口4 种工作方式、多机...传送数据是以一帧一帧格式进行。串行通信(英语:Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单...

    主要内容:串行口的结构、串行口的4 种工作方式、多机通信、波特率的制定方法、串行口的应用。

    MCS-51单片机内部有一个全双工的异步串行口。

    全双工:双机通信之间可以同时实现发送数据和接收数据。

    异步:收发双方没有应用同一时钟来控制数据传送。传送的数据是以一帧一帧格式进行的。

    串行通信(英语:Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。

    简言之:串行通讯就是排成一队走,并行就是排成一列走。

    同步串行通信(Synchronous serial communication)和异步串行通信(Asynchronous serial communication)

    1)发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如在时钟信号的上升沿的时候,将数据发送出去)发送数据,接收端根据发送端提供的时钟信号,以及大家的约定,接收数据。这就是常说的同步串行通信(Synchronous serial communication),I2C、SPI等有时钟信号的协议,都属于这种通信方式。

    2)发送端在数据发送之前和之后,通过特定形式的信号(例如START信号和STOP信号),告诉接收端,可以开始(或者停止)接收数据了。与此同时,收发两方会约定一个数据发送的速度(就是大名鼎鼎的波特率),发送端在发送START信号之后,就按照固定的节奏发送串行数据,与此同时,接收端在收到START信号之后,也按照固定的节奏接收串行数据。这就是常说的异步串行通信(Asynchronous serial communication)。

    串行异步通信是单片机中常用的方式:

    数据按帧传输,一包含 数据按帧传输,一包含 起始位 、数据校验和停止。依靠 起始位 、停止保持通信同步。因每帧传输都要建立一次同步 ,即需要额外两个附加位适用于工作速度较低的场合。

    190517e921dc0f5c78f34ed62fbeb4d5.png

    串行口的接口及基本原理:

    该单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。

    两个物理上独立地接收和发送缓冲器,可同时收、发数据(全双工)。两个缓冲区公用一个特殊功能寄存器字节地址:SBUF(99H),它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

    控制寄存器共两个:特殊功能寄存器SCON(控制寄存器)和PCON(状态寄存器)。

    串行口控制寄存器SCON :字节地址98H,可位寻址,格式如图所示

    01a46da43b89aa56fbb17ea9990c1132.png

    (1)SM0、SM1——串行口4种工作方式的选择位

    SM0 SM1 方式 功 能 说 明

    0 0 0 同步移位寄存器方式(用于扩展I/O口)

    0 1 1 8位异步收发,波特率可变(由定时器控制)

    1 0 2 9位异步收发,波特率为fosc/64或fosc/32

    1 1 3 9位异步收发,波特率可变(由定时器控制)

    表1 串行口的4种工作方式

    7f2589232745bd2f151085bc3037f847.png

    其中fosc为晶体震荡器频率

    SM2:多机通信控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。

    REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。

    TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。

    RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。

    TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的办法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。

    RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的办法获知或者用中断的办法获知。RI也必须用软件清0。

    波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。

    波特率 :每秒钟传送码元数目,单位波特( Baud ) ( 位/秒( bps )

    假设波特率为: 1200b /s

    每一位代码的传送时间 Td (码元宽度 )为波特率的倒数。

    Td =1b /( 1200bs)= 0.833ms

    而每个字符格式包含 10 个代码位( 1个起始位、 1个终止位、 8个数据位),传送一字节需要 8.33ms 。

    传送距离随波特率增加而减少

    波特率制定方法:

    • 收、发双方的波特率必须一致。
    • 串口方式0和方式2的波特率是固定的;
    • 串口方式1和方式3的波特率是可变的,由T1溢出率确定。

    串口各种工作方式下波特率的计算

    1. 方式0时,波特率固定为时钟频率fosc的1/12。
    2. 方式2时,波特率仅与SMOD位的值有关。

    2 定时器T1产生波特率的计算

    (1)方式0波特率=时钟频率fosc×1/12,不受SMOD位的值的影响。若fosc=12MHz,波特率为fosc/12即1Mb/s。

    (2)方式2波特率=(2^SMOD/64)×fosc

    若fosc=12MHz: SMOD=0 波特率=187.5kb/s; SMOD=1 波特率=375kb/s

    (3)方式1或方式3时,波特率为:

    波特率=(2^SMOD/64)×T1的溢出率

    实际设定波特率时,T1常设置为方式2定时(自动装初值)这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。

    由上式可见,波特率随fosc、SMOD和初值X而变化。

    8ad07f258b3419a7892292f8984a4cbc.png

    帧格式:

    300bc0f2329d130abe58752541e1c580.png

    起始位(1位)---低电平;

    数据位(8位);

    奇偶校验位(1位,可无校验位);

    停止位(1位)---高电平。

    空闲位

    串行口的四种工作方式:

    1、工作方式0

    工作方式0由SCON寄存器SM0SM1都为低电平决定,用于移位寄存器,I/O口扩展应用。一帧信息包括8位数据位、低位在前,高位在后。波特率固定为fosc/12。

    发送:TI=0时,执行MOV SBUF,A将数据写入发送缓冲寄存器,并启动发送。TXD端输出移位脉冲,串行口把SBUF中数据依次从低到高从RXD读出。一帧数据发送完毕,硬件自动将RI发送中断标志位置1,若再次发送需要用指令CLR TI清零。

    MOV SBUF,A;启动发送

    JNB TI,$;若TI=0则该指令原地踏步等待发送完毕

    CLR TI;请0,清发送中断标志位

    接收:在RI=0,REN=1时,开始串行接收数据,TXD输出移位脉冲。将数据以固定波特率接收到SBUF中去,一帧数据接收完毕后,硬件自动将RI置1,若再接收数据需要用MOV A,SBUF读出数据,然后用指令将RI清零。

    JNB RI,$;RI=0则软件原地踏步,等待接收

    CLR RI;清接收中断标志位

    MOV A,SBUF;将接收数据送入累加器A中

    2、工作方式1

    一帧信息包括起始位、8位数据位、停止位共10位,低位在前,高位在后。波特率可变,由定时器/计数器T1的输出率和SMOD(PCON.7)决定。

    基本的接收发送指令与方式0同,但是:

    (1)当SM2=0时,将接收的数据送入SBUF中,停止位送入RB8中,并置中断标志位RI=1.

    (2)当SM2=1时,接收停止位=1,将接收的数据送入SBUF并且停止位送入RB8,并置RI=1,否则丢弃接收到的数据。再次接收前需要将RI清0。

    波特率计算方法:波特率=(2^SMOD/32)*定时器T1的溢出率

    溢出率:定时器在1S内产生溢出的次数。

    定时器的溢出率与定时器的工作模式有关,可以改变TMOD寄存器T1方式字段中的M1M0两位。T1定时器工作在方式2时,作为8位定时器自动重载功能。

    3、方式2

    9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。

    方式2波特率= (2^SMOD/64)×fosc

    发送前,先根据通讯协议由软件设置TB8(例如,双机通讯时的奇偶校验位或多机通讯时的地址/数据的标志位)。

    SM0、SM1=10,且REN=1。数据由RXD端输入,接收11位信息。当位检测到RXD从1到0的负跳变,并判断起始位有效后,开始收一帧信息。在接收器完第9位数据后,需满足两个条件,才能将接收到的数据送入SBUF。

    (1)RI=0,意味着接收缓冲器为空。

    (2)SM2=0或接收到的第9位数据位RB8=1时。

    当上述两个条件满足时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,并置“1”RI。若不满足两个条件,接收的信息将被丢弃。

    4、方式3

    SM0、SM1=11,串口为方式3。波特率可变的9位异步通讯方式,除波特率外,方式3和方式2相同。

    多机通信(主动式结构)

    要保证主机与所选择的从机实现可靠地通信,必须保证串口具有识别功能。

    SCON中的SM2位就是满足这一条件而设置的多机通信控制位。

    原理:在串行口以方式2(或方式3)接收时,若SM2=1,表示置多机通信功能位,这时有两种可能:

    (1)接收到的第9位数据为1时,数据才装入SBUF,并置中断标志RI=1向CPU发出中断请求;

    (2)接收到的第9位数据为0时,则不产生中断标志,信息将抛弃。

    主机发送信息两类:一类是地址,用来需要和主机通信的从机,特征是串行发送的第9位数据TB8为1;另一种是数据,串行传送的第9位数据TB8=0.

    主从机通信的过程如下:

    1)使所有的从机工作方式2或3,且SM2=1,REN=1,以便主机发送地址信息,从机接收地址帧信息。

    2)主机发送要寻址的从机的地址信息,其中包括8位需要与之通信的从机地址,第9位TB8=1.

    3)所有从机接收到地址信息,置RI=1.

    4)各从机进行地址比较,对于接收到的地址和自己的地址相同的从机,使SM2=0,准备接收主机随后发来的数据,对于地址不符合的从机,仍保持SM2=1的状态,对主机随后的数据不予理睬,直至发现新的地址帧。

    备注:补充RS485差分传输特性,所谓差分传输,就是发送端在两条信号线上传输幅值相等相位相反的电信号,接收端对接受的两条线信号作减法运算,这样获得幅值翻倍的信号。

    特点:从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里,"系统地"被用作电压基准点。当'地'当作电压测量基准时,这种信号规划被称之为单端的。我们使用该术语是因为信号是用单个导体上的电压来表示的。 另一方面,一个差分信号作用在两个导体上。信号值是两个导体间的电压差。尽管不是非常必要,这两个电压的平均值还是会经常保持一致。

    可以想象,这两个导体上被同时加入的一个相等的电压,也就是所谓共模信号,对一个差分放大系统来说是没有作用的,也就是说,尽管一个差分放大器的输入有效信号幅度只需要几毫伏,但它却可以对一个高达几伏特的共模信号无动于衷。这个指标叫做差分放大器的共模抑制比(CMRR),一般的运算放大器可以达到90db以上,高精度运放甚至达到120db。因为干扰信号一般是以共模信号的形式存在,所以差分信号的应用极大地提高了放大器系统的信噪比。

    单端传输就是对与地而言的。

    例:基本设置指令如下。

    87372981d1e4aab1b0f1847f3940bceb.png
    展开全文
  • 介绍DMX512灯光控制协议的帧及其数据格式传输方式,分析DMX512的优缺点和异步DMX512的缺点;提出采用SD5128芯片实现同步DMX512协议以及对RGB LED灯的控制,并给出了软硬件设计方法。
  • 并行通信:是指数据的各位同时进行传送的通信方式。串行通信:是指数据一位一位顺序传送的通信方式。串行通信的两种基本形式:同步通信和异步通信...异步通信所传输的数据帧格式是由1个起始位、1~9个数据位、1~2个停
  • # 数据链路层主要研究的三个基本问题 封装成:源mac,目的mac、开始符、结束符、校验序列 透明传输:文本传输、可执行文件传输的界定符 差错检验:发送端 环冗余检验CRC FCS校验序列 接收端亦CRC运算# 点...
  • STM32 串口总结

    2018-10-23 10:07:20
    简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用串口通信基本都是 UART。串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。 ...

            通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。

    同步通信:带时钟同步信号传输。 --SPI,IIC通信接口

    异步通信:不带时钟同步信号。   --UART(通用异步收发器),单总线

    STM32异步通信帧格式如下:

    • 起始位
    • 数据位(8位或者9位)9位是带奇偶校验位 
    • 奇偶校验位(第10位)奇检验就是保证8位数据位中1的个数为基数个,如果1是基数个则检验位就为0,反之为1;偶检验就是保证8位数据位中1的个数为偶数个,如果1是偶数个则检验位就为0,反之为1; 
    • 停止位(11位)

    STM32 串口数据收发:

    STM32 串口相关结构体:

    typedef struct {
                 uint32_t USART_BaudRate; // 波特率
                 uint16_t USART_WordLength; // 字长
                 uint16_t USART_StopBits; // 停止位
                 uint16_t USART_Parity; // 校验位
                 uint16_t USART_Mode; // USART 模式
                 uint16_t USART_HardwareFlowControl; // 硬件流控制
                } USART_InitTypeDef;
    typedef struct {
                 uint16_t USART_Clock; // 时钟使能控制
                 uint16_t USART_CPOL; // 时钟极性
                 uint16_t USART_CPHA; // 时钟相位
                 uint16_t USART_LastBit; // 最尾位时钟脉冲
                } USART_ClockInitTypeDef;
    

    STM32 串口配置步骤:

    1、串口时钟和GPIO时钟使能

    2、设置引脚复用器映射:

    3、串口参数初始化(GPIO配置)(五大参数)

    4、串口参数初始化(六大参数)

    5、使能串口

    6、开启中断(需要开启中断才需要)

    7、配置NVIC中断(四大参数)

    8、编写中断处理函数:USARTx_IRQHandler();

    9、串口数据收发:

            void USART_SendData();//发送数据到串口,DR

            uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

    10、串口传输状态获取:

            FlagStatusUSART_GetFlagStatus();

            void USART_ClearITPendingBit();

    void USART_config(void)
    {
      GPIO_InitTypeDef GPIOA_InitStruct;
      USART_InitTypeDef USART1_InitStruct;
      NVIC_InitTypeDef NVIC_InitStruct;
    
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /*使能USART1时钟*/
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /*使能GPIOA的时钟 */
    
      /*将PA9和PA10映射到串口1 */
      GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
      GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
    
      GPIOA_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; /*设置GPIO端口模式*/
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  /*复用推挽输出*/
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
      GPIO_Init(GPIOA, &GPIOA_InitStruct);
    
      /*串口参数初始化 */
      USART1_InitStruct.USART_BaudRate = 115200; /*波特率设置115200*/
      /*无硬件数据流控制*/
      USART1_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
      USART1_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
      USART1_InitStruct.USART_Parity = USART_Parity_No; //无奇偶校验位
      USART1_InitStruct.USART_StopBits = USART_StopBits_1; //一个停止位
      USART1_InitStruct.USART_WordLength = USART_WordLength_8b;//字长8位数据格式
      USART_Init(USART1, &USART1_InitStruct);
      USART_Cmd(USART1, ENABLE); /* 使能USART1 */
    
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /*设置中断分组*/
      /*使能串口使用的中断*/
      NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn; /*中断通道*/
      NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
      NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级
      NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; //响应优先级
      NVIC_Init(&NVIC_InitStruct);
      USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能中断
    }
    /* 中断服务函数 */
    void USART1_IRQHandler(void)
    {
        uint16_t recv;
        if (USART_GetFlagStatus(USART1,USART_IT_RXNE))
        {
            recv = USART_ReceiveData(USART1); //收数据
            USART_SendData(USART1,recv); //发数据
            USART_ClearFlag(USART1, USART_IT_RXNE); //清除标志位
        }
    }
    

     

    展开全文
  • 同步和异步 USART (时钟,数据位) 通用同步异步收发器,使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换 rs232 rs485 同步 有时钟信号 IIC SPI 异步 UART(异步串行通信) 有起始位,...
    同步和异步
    USART (时钟,数据位)
    通用同步异步收发器,使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换
    rs232
    rs485
    同步
    有时钟信号
    IIC SPI
    异步
    UART(异步串行通信)
    有起始位,停止位,校验位
    在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含
    有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,
    而异步通讯双方的时钟允许误差较大。

    串行与并行
    常用串行通信(TX RX)
    USART IIC SPC
    常用并行通信(八位并行传输)
    SDIO FSMC(16位)
    串行通讯与并行通讯的特性对比
    特性 串行通讯 并行通讯
    通讯距离 较远 较近
    抗干扰能力 较强 较弱
    传输速率 较慢 较高
    成本 较低 较高
    不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著
    影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。

    全双工,半双工,单工
    全双工 在同一时刻,两个设备之间可以同时收发数据
    半双工 两个设备之间可以收发数据,但不能在同一时刻进行
    单工 在任何时刻都只能进行一个方向的通讯,即一个固定为发送设备,另一个固定为接收设备

    波特率和比特率
    比特率
    每秒钟传输的二进制位数,单位为比特每秒(bit/s)
    波特率
    表示每秒钟传输了多少个码元(通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字)
    碼元
    一个二进制位表示一个碼元(比特率和波特率是一样的
    0v 0
    3.3v 1
    两个二进制位表示一个碼元
    0v 00
    2v 01
    4v 10
    6v 11



    常用波特率:4800 9600 19200 115200
    1波特=1bps(位/秒)
    以字符为单位通信



    展开全文
  • 更多,更及时的干货内容,请关注微信公众号:工控分享恭贺新春1.基本的通讯方式基本的通讯方式有...异步通信所传输的数据帧格式是由1个起始位、1~9个数据位、1~2个停止位组成,依靠起始位停止位保持同步同步...
  • 差错控制(CRC循环冗余检验)无比特差错无传输差错点对点协议(PPP协议)PPP协议的帧格式标志字段地址字段控制字段协议字段透明传输问题(同步传输)透明传输问题(异步传输) 数据链路层 数据链路层主要有两个功能 :...
  • 【51单片机】(手把手教你)串口通信-基础篇

    千次阅读 多人点赞 2018-03-21 10:24:01
    通信方式并行适合短距离通信,并行通信控制简单、...发送方对接收方的同步可以通过外同步和同步异步(常)以字符(构成的帧)为单位进行传输。数据位从低到高传送。格式:这里的空闲时间是任意的。串行通信的制式...
  • 计算机网络实验报告

    2017-11-05 17:15:59
    (2)将A封装成字符异步传输模式PPP(注意字符填充)。 (3)将A封装成位同步传输模式PPP(注意比特填充)。 (4)将A封装成MAC广播(源MAC地址采用本机MAC地址,目的MAC地址采用广播地址) 3、实验报告...
  • 问题3-2:当数据链路层使用PPP协议或CSMA/CD协议时,既然不保证可靠传输,那么为什么对所传输的帧进行差错检验呢? 问题3-3:既然现在因特网使用得最多的数据链路层协议并不保证可靠传输,那么为什么我们在数据链路...
  • STM32串口小结

    2021-01-26 20:21:35
    **串行通信**一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。 USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以...
  • 6.13 帧格式和差错检测机制 34 6.14 小结 35 练习 35 第7章 局域网技术与网络拓扑 37 7.1 概述 37 7.2 直接点对点通信 37 7.3 共享通信信道 38 7.4 局域网重要性与访问局部性 38 7.5 局域网拓扑结构 39 7.5.1 ...
  • 串口控制台

    2016-10-31 23:56:00
    串口通讯,分为同步通讯和异步通讯,通常使用的都是异步串口。通讯时,双方先约定好数据格式,即波特率,数据位,停止位,奇偶校验位等。 波特率:表示没秒钟传输的bit个数。如:300波特表示每秒钟发送300个...
  • 串行通信接口

    2014-11-06 16:11:00
    1、【通过打包/解析正确地传输和接收数据,可以在硬件里面实现】    串口通讯—异步通信方式  以起止式异步协议为例,下图显示是起止式一数据的格式:  串口通讯—同步通信...
  • 51单片机串口通信

    2019-07-18 17:03:13
    1.通信方式分类 (1)并行通信 ...异步串行通信:所谓“异步”,指是双方设备使用各自时钟,以字符为单位传输,采用一种特殊的格式称为“”(如下图),且各字符之间间隙不等。 一数据...
  • 串口通讯,分为同步通讯和异步通讯,我们通常使用都是异步串口。通讯时,双方先约定好数据帧的格式,即波特率,数据位,停止位,奇偶校验位等。这是一个衡量通信速度参数。它表示每秒钟传送bit个数。例如300...
  • 计算机网络实验

    2011-05-01 17:46:00
    实验二 1、实验题目:帧的封装  帧的封装时任何数据链路层... (2) 将A封装成字符异步传输模式PPP(注意字符填充)。 (3) 将A封装成位同步传输模式PPP(注意比特填充)。 (4)
  • 串口通讯分为同步和异步,我们通常使用是异步串口。通讯时,双方先约定好数据帧的格式,即波特率,数据位,停止位,奇偶校验位等。我们通常使用是RS2329串口,其中,最重要是2,3,5脚。 2:RXD接收数据 3...
  • 传输模式选择:同步还是异步,默认为异步模式,可通过选择USART控制状态寄存器UCSR0C中UMSEL位来选择,UMSEL为0,是异步模式. 波特率设置:通信双方都必须有相同波特率,波特率可以通过设置波特率发生寄存器...
  • 华为路由器配置手册

    2011-10-29 11:38:28
    以太网口对接收到的帧能够自动识别其格式,因此可以同时接收多种格式的帧,但在同一时间只能发送一种帧格式。 no send-frame-type 命令恢复缺省的IP报文发送帧格式。 【举例】 设置以太网口发送帧格式为Ethernet_...
  • 问题3-2:当数据链路层使用PPP协议或CSMA/CD协议时,既然不保证可靠传输,那么为什么对所传输的帧进行差错检验呢? 问题3-3:为什么旧的版本教材在数据链路层一章中讲授可靠传输,但现在新的版本教材则取消了可靠...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    使用简便直截了当,用户只需要加载图片调整您想要,如位置,时间显示处理方法前。 JavaPList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    使用简便直截了当,用户只需要加载图片调整您想要,如位置,时间显示处理方法前。 JavaPList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
  • Java资源包01

    2016-08-31 09:16:25
    使用简便直截了当,用户只需要加载图片调整您想要,如位置,时间显示处理方法前。 JavaPList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
  • java开源包101

    2016-07-13 10:11:08
    使用简便直截了当,用户只需要加载图片调整您想要,如位置,时间显示处理方法前。 JavaPList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    使用简便直截了当,用户只需要加载图片调整您想要,如位置,时间显示处理方法前。 JavaPList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

同步传输和异步传输的帧格式