OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5282|回复: 3

串口发送字节数不对,要不就是最后一个字节不对,要不就是字节个数不对,请指示

[复制链接]

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
发表于 2019-7-1 21:15:34 | 显示全部楼层 |阅读模式
30金钱
       
利用串口发送数据,计划发送40个字节,
如果 判断  发送计数器cnt_uart_tx
cnt_uart_tx == 6'd39   最后一个字节不对,字节个数没问题,但是最后一个赋值有问题,应该为0x1b
1A AB AC 01 02 03 04 05 06 07 08 09 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 36
如果 判断   cnt_uart_tx == 6'd40   发送41个字节,最后为
1A AB AC 01 02 03 04 05 06 07 08 09 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 1b 1b

求指教!

   reg tx_cnt_en;  //发送数据使能计数器
       
        //读取uart_fifo_tx 内容
        always @(posedge clk or negedge rst_n)
        if(!rst_n)
                tx_cnt_en <= 1'b0;
//        else if(single_tx_posedge)
        else if(r_tx_en)
                tx_cnt_en <= 1'b1;
        else if (cnt_uart_tx == 6'd39)            
                tx_cnt_en <= 1'b0;
        else
                tx_cnt_en <= tx_cnt_en;       
       
        assign tx_en = tx_cnt_en;         // tx_en  为uart_en 使能信号
               
        //读取计数器
        reg [5:0]cnt_uart_tx;//发送计数器
        always @(posedge clk or negedge rst_n)
        if(!rst_n)
                cnt_uart_tx <= 6'd0;
        else if(tx_cnt_en && tx_done)begin
                if(cnt_uart_tx == 6'd39)         
                        cnt_uart_tx <= 6'd0;
                else
                        cnt_uart_tx <= cnt_uart_tx + 1'b1;
        end
        else
                cnt_uart_tx <= cnt_uart_tx;
       
        always @(posedge clk or negedge rst_n)
        if(!rst_n)
                data_send <= 8'h00;
        else if(tx_cnt_en) begin
                case(cnt_uart_tx)
                        0:begin   data_send <= 8'h1a;                         end
                        1:begin   data_send <= 8'hab;                  end
                        2:begin   data_send <= 8'hac;         end
                        3:begin   data_send <= 8'h01;  end
                        4:begin   data_send <= 8'h02;  end
                        5:begin   data_send <= 8'h03;  end
                        6:begin   data_send <= 8'h04;  end
                        7:begin   data_send <= 8'h05;  end
                        8:begin   data_send <= 8'h06;  end
                        9:begin   data_send <= 8'h07;  end
                        10:begin  data_send <= 8'h08;end
                        11:begin  data_send <= 8'h09;end
                        12:begin  data_send <= 8'h10;end
                        13:begin  data_send <= 8'h11;end
                        14:begin  data_send <= 8'h12;end
                        15:begin  data_send <= 8'h13;end
                        16:begin  data_send <= 8'h14;end
                        17:begin  data_send <= 8'h15;end
                        18:begin  data_send <= 8'h16;end
                        19:begin  data_send <= 8'h17;end
                        20:begin  data_send <= 8'h18;end
                        21:begin  data_send <= 8'h19;end
                        22:begin  data_send <= 8'h20;end
                        23:begin  data_send <= 8'h21;end
                        24:begin  data_send <= 8'h22;end
                        25:begin  data_send <= 8'h23;end
                        26:begin  data_send <= 8'h24;end
                        27:begin  data_send <= 8'h25;end
                        28:begin  data_send <= 8'h26;end
                        29:begin  data_send <= 8'h27;end
                        30:begin  data_send <= 8'h28;end
                        31:begin  data_send <= 8'h29;end
                        32:begin  data_send <= 8'h30;end
                        33:begin  data_send <= 8'h31;end
                        34:begin  data_send <= 8'h32;end
                        35:begin  data_send <= 8'h33;end
                        36:begin  data_send <= 8'h34;end
                        37:begin  data_send <= 8'h35;end
                        38:begin  data_send <= 8'h36;end
                        39:begin  data_send <= 8'h1b;end
               
                        default: begin data_send <= 8'h00; end
                       
               
               
               
                endcase
       
       

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2019-7-2 02:04:29 | 显示全部楼层
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2019-7-2 09:16:51 | 显示全部楼层

原子哥,你们都是怎么处理串口发送和接收的呢?
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2019-7-4 17:24:09 | 显示全部楼层
有木有人啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 07:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表