在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5142|回复: 13

[求助] 串口数据发送遇到的问题

[复制链接]
发表于 2016-5-16 12:00:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我对AD采集的数据进行1s统计,统计 完后直接由串口发往上位机,现在1s统计量也能正常统计(共6个字节),串口也能以1s间隔往上位机上传数据,但是发现串口往上位机传输的一直都是6个字节的00,也就是说统计量没有正确地输送给串口模块。我把统计量传递给串口模块的程序贴上,还有SignalTap II上看到的1s统计量截图贴上。截图上Dataout数据就是1s统计量 2B0H,可以看到在1s定时(timer1s信号)到来时,统计量也相应出现了数据,但是Dataout传递给串口的数据rData可以看到却是00,也就是没传递过来,为什么?另外,从RTL电路图上看,数据之间的传输线是连接上的,因此,问题有点疑惑。麻烦各位了!

module control_module
(
         clk_a,RSTn,
         TX_Done_Sig,
         timer1s,
         Data_out,
         TX_En_Sig,TX_Data
);

input clk_a;
input RSTn;
input TX_Done_Sig;
input timer1s;
input [47:0] Data_out;


output TX_En_Sig;
output [47:0] TX_Data;

reg isEn;
reg [47:0] rData;

always @ ( posedge clk_a or negedge RSTn )
         begin
         if ( !RSTn )
                 begin
                         isEn <= 1'b0;
                         rData <= 0;
                 end

     else if ( TX_Done_Sig )
                 begin
                         isEn <= 1'b0;
                 end
     else if ( timer1s )   //1s定时到,统计量Data_out传递给rData用于串口传输
            begin
                 rData <= Data_out;
                 isEn <= 1'b1;
                 end

         end

assign TX_Data = rData;
assign TX_En_Sig = isEn;

endmodule

1s定时到时候的数据变化

1s定时到时候的数据变化
发表于 2016-5-16 20:33:21 | 显示全部楼层
else if ( TX_Done_Sig )
                 begin
                         isEn <= 1'b0;
                 end

没有抓取   其次跨时钟域看看
发表于 2016-5-17 09:15:32 | 显示全部楼层
回复 1# hms2006


   如果 TX_Done_Sig 信号一直为1'b1的话,那是进不了下面的。。
发表于 2016-5-17 10:10:48 | 显示全部楼层
timer1s和Data_out没有重合的地方,你的data_out应该是用timer1s打出来的吧,你后面又用timer1s作为有效信号去采样data_out,当然采不到啊。
你可以把timer1s打一拍。
always @ ( posedge clk_a or negedge RSTn ) begin
if(!RSTn) timers1s_reg <= 'b0;
else timers1s_reg <= timers1s;
end
然后用timers1s_reg作为valid信号去采样data_out.
     else if ( timer1s_reg )   //1s定时到,统计量Data_out传递给rData用于串口传输
            begin
                 rData <= Data_out;
                 isEn <= 1'b1;
                 end

         end
 楼主| 发表于 2016-5-17 13:19:43 | 显示全部楼层

可以看到Tx_Done信号

可以看到Tx_Done信号
回复 2# lhlhualin
 楼主| 发表于 2016-5-17 13:21:11 | 显示全部楼层
回复 3# harry_hust

Tx_Done信号已经抓取,不可能一直为正,因为我的串口是发送成功的!而且是每秒发送1次,没问题的这点!
 楼主| 发表于 2016-5-17 13:23:38 | 显示全部楼层
回复 4# atomdust

感谢回复,按照您的方法进行修改验证,发现问题依旧,我把SignalTap II看到的信号截图上传上来。

信号截图

信号截图

发表于 2016-5-17 14:07:26 | 显示全部楼层
回复 6# hms2006


   放大timer_1s那个点的波形,我初略看,在timer_1s那个周期,data_out的数据好像就是 0,你check一下
 楼主| 发表于 2016-5-17 16:06:28 | 显示全部楼层
回复 8# harry_hust


    Data_out刚好是在timer1s从高转低时刻,出现数据!所出数据具体数值即为number5_8这个数值。
发表于 2016-5-17 17:26:13 | 显示全部楼层
回复 9# hms2006


   那你觉得这样 rData 能采到 Data_out 的数据吗?
这样是采不到的啊!!Data_outtime_1s 后面1个周期,这怎么采。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:06 , Processed in 0.025159 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表