用uart串口发送16位数据总是不对,调了一天了,不知道问题在哪。

2019-12-02 16:10发布

<p> 设置的16位数据是01000010 01000010,2个8位的10进制都是66,对应ascii是B,用串口调试工具显示接受了2个字符,但是只显示一个B</p><p> 然后又用labwindows试验,收到的数据显示是66和-2,实在不知道哪里有问题</p><p> 我把16位数据一起发送了,是按照uart协议发的,大佬们能看下吗</p><p> always@(posedge clk or negedge rst)</p><br><pre style="max-width: 100%;"><code class="makefile hljs" codemark="1">begin IF (!rst) begin num&lt;=0; tx_r&lt;=1'b1; end else if(tx_en) begin if(clk_bps) begin num&lt;=num+1; case(num) 4'd0:tx_r&lt;=1'b0; 4'd1:tx_r&lt;=tx_data[0]; 4'd2:tx_r&lt;=tx_data[1]; 4'd3:tx_r&lt;=tx_data[2]; 4'd4:tx_r&lt;=tx_data[3]; 4'd5:tx_r&lt;=tx_data[4]; 4'd6:tx_r&lt;=tx_data[5]; 4'd7:tx_r&lt;=tx_data[6]; 4'd8:tx_r&lt;=tx_data[7]; 4'd9:tx_r&lt;=1'b1; 4'd14:tx_r&lt;=1'b0; 4'd15:tx_r&lt;=tx_data[8]; 4'd16:tx_r&lt;=tx_data[9]; 4'd17:tx_r&lt;=tx_data[10]; 4'd18:tx_r&lt;=tx_data[11]; 4'd19:tx_r&lt;=tx_data[12]; 4'd20:tx_r&lt;=tx_data[13]; 4'd21:tx_r&lt;=tx_data[14]; 4'd22:tx_r&lt;=tx_data[15]; 4'd23:tx_r&lt;=1'b1; default:tx_r&lt;=1'b1; endcase end else if(num==24) num&lt;=0; end end</code></pre><p><br></p>