论坛风格切换切换到宽版
  • 5874阅读
  • 9回复

请教一下FX614随机发送的无用数据该如何处理 [复制链接]

上一主题 下一主题
离线BD6AAO
 
发帖
214
只看楼主 倒序阅读 0楼 发表于: 2012-06-20
偶尔翻出来一块PIC TNC,是W2FS设计的,N年前6CR重新LAYOUT的。发现上电之后设备就不断的点亮DCD的LED,按照作者的程序,这说明收到包头0x7e。FX614芯片在没有任何接收的情况下也会不断的发送随机数据这点是知道的,但是如果随机的数据里也包含很多0x7e这个包的开头和结尾标志的话,那么程序该如何判断什么是真正的数据包的界限呢?难道是不管真伪都存下来,然后通过两个字节的CRC来判断?还是其他什么原因导致FX614发出错误的0x7e?
BD6AAO
------------------
QQ:11104894
MSN:victor_wuyi   hotmail
bd6aao@sina.com
离线BD6AAO
发帖
214
只看该作者 1楼 发表于: 2012-06-21
昨天咨询了原作者W2FS,他说在接收状态下,一般不会去找0x7e作为数据包开始的标志,因为FX614也会随机发出0x7e。他用6个宽度在838us和5.8ms之间的脉冲作为依据,当收到这一系列的脉冲之后再开始寻找0x7e。不知道谁知道为什么这么做?

73
BD6AAO
------------------
QQ:11104894
MSN:victor_wuyi   hotmail
bd6aao@sina.com
离线BH4TDV
发帖
1188
只看该作者 2楼 发表于: 2012-06-23
FX604/614使用很方便,用DET信号做检测,当DET=1,倒相后触发CPU中断,中断中对TX数据处理。

年前做的实物图纸


年前做的实物


马工出品  必属精品  
联系优先电话,其次淘宝旺旺
淘宝店:http://BH4TDV.taobao.com/  M:15052205720  13013684000(短信不回)  微信: BH4TDV  

QQ1:1442939818   (验证请写HAM或技术交流)晚7:00以后

备用E-mail: xlons@126.com
离线BH4TDV
发帖
1188
只看该作者 3楼 发表于: 2012-06-23

http://www.hellocq.net/forum/read-htm-tid-282206.html
3楼时序图


2个7E之间数据需要校验,校验不符的丢弃处理。
马工出品  必属精品  
联系优先电话,其次淘宝旺旺
淘宝店:http://BH4TDV.taobao.com/  M:15052205720  13013684000(短信不回)  微信: BH4TDV  

QQ1:1442939818   (验证请写HAM或技术交流)晚7:00以后

备用E-mail: xlons@126.com
离线BD6AAO
发帖
214
只看该作者 4楼 发表于: 2012-06-24
多谢BH4TDV,我记得我们聊过。
对你的回复有几个疑问请教一下:
1. FX614的那个DET引脚不靠谱,只要有声音就会点亮,静噪关闭后,噪声都能使其一直常亮。用它来判断不准确吧?
2. FX614一直都在输出随机的脉冲,经常也会产生0x7e。你是怎么解决这个问题的,是不是所有数据都记录下来,就按IO中断来判断,找到0x7e和0x7e的配对后计算CRC,不合适的都丢弃?
3. 如果是按上述的方法来判断的话,那你的DCD灯是什么时候点亮呢,如果是收到0x7e的头就点亮的话,万一CRC没过,或者很久没收到0x7e的结尾的话,DCD不就被错误亮点了吗?
4. 为什么要反相,我用示波器抓了数据发现,FX614 RX输出脉冲,在没有数据的时候和有FSK数据输出的相位确实是反的。
5. hdlc不是要求数据的1位不能连续超过6个吗?也就是脉冲间的上升下降沿间隔不大于5.8ms,但是我发现在传输beacon数据的时候,FX614 RX经常有超过10ms的脉冲,这是为什么呢?

多谢

73 DE BD6AAO


[ 此帖被BD6AAO在2012-06-24 23:12重新编辑 ]
BD6AAO
------------------
QQ:11104894
MSN:victor_wuyi   hotmail
bd6aao@sina.com
离线BH4TDV
发帖
1188
只看该作者 5楼 发表于: 2012-06-24
用AGW声卡输出一段音频接614解出方波信号来分析编码比较方便,编码解析清楚了,解码则反之更好理解。
我以前的写的一些程序流程图供您参考下





马工出品  必属精品  
联系优先电话,其次淘宝旺旺
淘宝店:http://BH4TDV.taobao.com/  M:15052205720  13013684000(短信不回)  微信: BH4TDV  

QQ1:1442939818   (验证请写HAM或技术交流)晚7:00以后

备用E-mail: xlons@126.com
离线BH4TDV
发帖
1188
只看该作者 6楼 发表于: 2012-06-25
1. FX614的那个DET引脚不靠谱,只要有声音就会点亮,静噪关闭后,噪声都能使其一直常亮。用它来判断不准确吧?
2. FX614一直都在输出随机的脉冲,经常也会产生0x7e。你是怎么解决这个问题的,是不是所有数据都记录下来,就按IO中断来判断,找到0x7e和0x7e的配对后计算CRC,不合适的都丢弃?
3. 如果是按上述的方法来判断的话,那你的DCD灯是什么时候点亮呢,如果是收到0x7e的头就点亮的话,万一CRC没过,或者很久没收到0x7e的结尾的话,DCD不就被错误亮点了吗?
4. 为什么要反相,我用示波器抓了数据发现,FX614 RX输出脉冲,在没有数据的时候和有FSK数据输出的相位确实是反的。
5. hdlc不是要求数据的1位不能连续超过6个吗?也就是脉冲间的上升下降沿间隔不大于5.8ms,但是我发现在传输beacon数据的时候,FX614 RX经常有超过10ms的脉冲,这是为什么呢?


1、DET点亮是由于声音中含有1200\2200HZ的音调,噪音中当然也包含,具体的是有个返回,可以用音频测试软件通过电脑声卡送入音频信号来测试,是有一定范围的,这个是可用的信号脚。输出脚大概800-1500hz左右输出1,1800-2600hz左右输出0,在这些范围内DET都会=1.
2、随机数据很正常的现象,乱码是断续输出的,通过检索7E来处理,正常的APRS数据包含连续的多个7E,比如连续检索到5个7E后,等待起始的引导7E结束,后续的数据认为是正常的数据包,按时序继续解码,出现数据中断、单音长音、说话声等情况都可退出程序,和数据完不完整没关系,当无异常情况发生并再次解出7E,认为一段数据包接收完毕,对数据校验判断数据是否正确。
3、DCD可以解码校验正确后点亮,我此处连接的DET做DET指示。
4、不存在音频反相的问题,我前面说的反相是DET电平反相下触发CPU用的。发送的APRS调制的数据以0开始还是以1开始都应该可以解码,用AGW输出一段音频,你采集后分析,同样的数据,间隔编码不同,循环以0开始和1开始。
5、参考下我画的HDLC编码时序图。不太清楚,可能是为防止有些电台反应慢而加长的PTT延时。

说的不是很清楚,有机会来无锡玩,当面交流下很快弄明白了
[ 此帖被BH4TDV在2012-06-25 22:45重新编辑 ]
马工出品  必属精品  
联系优先电话,其次淘宝旺旺
淘宝店:http://BH4TDV.taobao.com/  M:15052205720  13013684000(短信不回)  微信: BH4TDV  

QQ1:1442939818   (验证请写HAM或技术交流)晚7:00以后

备用E-mail: xlons@126.com
离线BD6AAO
发帖
214
只看该作者 7楼 发表于: 2012-06-25
太感谢了,你说的比PIC TNC原作者都详细。
第一三五点都没问题了,我通过实验和你的文档也证实了。
另外有几个问题:
1. 关于第二点,原作者也提到正确的数据包,无论是aprs的数据还是普通tnc的数据传输过程都会以5、6个0x7e开始,这是为什么呢?原作者认为这是通讯系统用来互相同步时钟精度用的,但我也没看到原作者在代码里来测量这段时间,然后校正0x7e脉冲的时间误差。而是用一段经验值的范围来解0x7e。
2. 第四点,我观察到噪声的随机脉冲,和正确的数据的脉冲的方向和脉冲的宽度都不一样,不知道你有没有这样的体会?
3. 另外我看了你的流程图,你是找到0x7e之后开始,通过IO中断和定时器中断来逐位读取数据位的,对吗?定时器设置838us中断,到达后认为是1,没到达之前就有IO中断,则设定时器为430us,到达后为1?



[ 此帖被BD6AAO在2012-06-25 17:11重新编辑 ]
BD6AAO
------------------
QQ:11104894
MSN:victor_wuyi   hotmail
bd6aao@sina.com
离线BH4TDV
发帖
1188
只看该作者 8楼 发表于: 2012-06-25
另外有几个问题:
1. 关于第二点,原作者也提到正确的数据包,无论是aprs的数据还是普通tnc的数据传输过程都会以5、6个0x7e开始,这是为什么呢?原作者认为这是通讯系统用来互相同步时钟精度用的,但我也没看到原作者在代码里来测量这段时间,然后校正0x7e脉冲的时间误差。而是用一段经验值的范围来解0x7e。
2. 第四点,我观察到噪声的随机脉冲,和正确的数据的脉冲的方向和脉冲的宽度都不一样,不知道你有没有这样的体会?
3. 另外我看了你的流程图,你是找到0x7e之后开始,通过IO中断和定时器中断来逐位读取数据位的,对吗?定时器设置838us中断,到达后认为是1,没到达之前就有IO中断,则设定时器为430us,到达后为1?


1、引导码7E的位数不限,起码有1个,考虑到1个7E可能是乱码,一般发送方,发送大于5个连续的7E,接收方检测到连续5个7E(乱码同时是连续5个7E的概率很低,几乎不可能),才认为是找到了数据头,同时考虑到电台PTT触发的延时,有些电台有休眠功能,唤醒需要500MS左右,或是中继转发时,中继打开需要一些时间,为避免接收到的数据时,发送方7E起始数据已发完,可以适当调整7E的长度,比如连发30个7E,当然也可以发1200单音或2200单音来做延时,单听上去比较单调而已。
和时钟同步没有关系,解码也不是测量7E的误差的。
2、噪声的随机数据,通过解码程序来处理,流程图写的很清楚,当连续检测到2-5个以上的7E时,认为是有效数据包开头,否则认为是误码,循环检测7E,检测7E过程中,同时检查DET信号,在接收过程中,DET信号消失,认为是信号意外中断。这个参考FX604/614芯片手册的时序图。
解码的过程大致梳理下:
1、DET引发CPU中断,以任何一个电平做起始点,0、1均可,如是连续5个都是乱码(没有7E),一般认为是非数据信号比如语音信号等,退出中断;解码过程中DET消失,同样信号意外中断退出中断
2、检索到首个7E,直到起始段7E结束,继续解码直到再次遇到数据尾部的7E标志符,认为接收完一段完整的数据,接收过程中如遇DET消失,认为数据异常中断作废处理,退出中断
3、对接收的完整数据校验,需要校验的长度=字节总长度字节-2,不含7E。
比如接收到20个字节的数据,最后2个字节是接收到的校验值,对前18个数据进行计算校验和接收到的最后2个校验值对比,完全相同则数据有效,转换成KISS数据格式输出或其他格式串口输出。反之作废。噪音高、杂音等导致的数据误码是导致校验不成功的常见原因,因此接收保持信号59,解码成功率才会高。

3、解码就只有DET中断,没有其他中断了。解码过程中没有定时器中断参与,定时器就设置在定时状态。HDLC编码是用0、1电平的反转来表示数据位0、1,因此当接收脚的电平发生反转后,认为接收到一位0,从反转位置作为同步位置,开始计时,延时433us,是字节0位,重设定时器833US,在833US内如没有遇到反转,则读字节1位写入1,依次收完1个字节的8位。
保持位变化(上升沿/下降沿)同步,确保数据接收正确,可以对时序不是很标准的一些tt一定的兼容。
这种同步位解码的方法可以适应不同设备的时钟误差造成的时序(脉冲宽度)稍许误差。具体参考上面几楼的的流程示意图。
另外要说明的是,HDLC的解码和传统的串口不同,没有起始位和结束位,起始电平0、1任意,HDLC编码是用0、1电平的反转来表示数据位0、1,参考我画的HDLC编码格式示意图。











[ 此帖被BH4TDV在2012-06-25 22:46重新编辑 ]
马工出品  必属精品  
联系优先电话,其次淘宝旺旺
淘宝店:http://BH4TDV.taobao.com/  M:15052205720  13013684000(短信不回)  微信: BH4TDV  

QQ1:1442939818   (验证请写HAM或技术交流)晚7:00以后

备用E-mail: xlons@126.com
离线BH3NEK
发帖
1369
只看该作者 9楼 发表于: 2018-10-05
现在很少看到这么有深度的技术贴了。

向两位老师学习。
呼号:BH3NEK
直频:145.100MHz  
中继: 439.125MHz-8 亚音103.5  
          147.925MHz-3.8 无亚音
          437.535-5 亚音 136.5
APRS:144.640
承德ham微信号:CDHAM01


QTH:河北承德开发区