RS232通信协议我就不讲了,自己在网上搜,我讲一下怎么发送,怎么用。
发送数据前,发送一直是高电平,发送数据前,先发送一个低电平的起始位,然后是八个电平的数据位,再然后是一个低电平的结束位,最后保持高电平,等待下一个数据到来。发送数据为8bit位宽,在9600波特率下依次将bit位输出作为中间8位的数据位。
下面给出的是RS232发送的模块,由于没有数据位的输入,所以内部写一个1hz时钟进行自加验证输出,通过串口助手观察发送数据是否正确
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54module RS232( input clk, input [7:0]k, //输入8bit发送数据 output reg dout=1 //发送位,起始高电平 ); //FPGA交流群689408654 reg [15:0]cn=0; reg hp9600hz=0; always@(posedge clk) begin if(cn==2603)begin cn<=0; hp9600hz<=!hp9600hz; end else cn<=cn+1; end /* reg [30:0]cm=0; //内部1hz自加验证程序 reg hp1hz=0; always@(posedge clk) begin if(cm>=24999999)begin cm<=0; hp1hz<=!hp1hz; end else cm<=cm+1; end reg [7:0]k=0; reg [7:0]k2=0; always@(posedge hp1hz) begin k<=k+1; end*/ reg [3:0]m=0; always@(posedge hp9600hz) begin k2<=k; case(m) 0:if(k2!==k)begin dout<=0;m<=1;end else dout<=1; 1:begin dout<=k[0];m<=2; end 2:begin dout<=k[1];m<=3; end 3:begin dout<=k[2];m<=4; end 4:begin dout<=k[3];m<=5; end 5:begin dout<=k[4];m<=6; end 6:begin dout<=k[5];m<=7; end 7:begin dout<=k[6];m<=8; end 8:begin dout<=k[7];m<=9; end 9:begin dout<=1;m<=0; end endcase end endmodule
串口助手接收显示,注意发送的波特率是9600,这里选择9600波特率,接收是4个bit一个数据,组成16进制数。
最后
以上就是开朗小丸子最近收集整理的关于基于FPGA的RS232串口发送(含程序)的全部内容,更多相关基于FPGA内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复