整理单片机串口小招数
扫描二维码
随时随地手机看文章
招一:把函数发生器当串口发送器来用
如果要调试串口,而你只有一块扳没有计算机,这种情况下,可以用函数发生器当串口发送器来用。若波特率是9600,需将函数发生器频率调到9600/2=4800HZ上,输出的TTL电平直接到RXD;如果使用的是RS232接口,频率不变的话就选函数双极性(交流输出)发生器。在这里提醒一下,电平有峰峰值到12VPP就够了。此时单片机收到数据必须是55H,可以用MOV P1、SBUF、在P1上测量电压,没显示也可以测串口了。
理由:55H 是01010101 串口启始位是0,先发55H最低位,于是一帧就是0(启始)101010101(停止)-0(启始)101010101(停止),正好是1/2波特率的方波。
招二:如果串口要实现远距离传输,怎么知道传输的可靠性和信号与传输媒介的适配性呢?
可以发送00H 0FFH 55H,如果这三个值都能正确接受,那网络一定能可靠传输了,这就是以点代面的测试方法。
理由:00H 0FFH是最宽的脉冲和电平(代表能量)最大/最小的脉冲,用信号系统话说他们代表是直流,而55H是最窄脉冲,它代表是最高频和能量中间值。既然最低的能过,最大也能过,最宽能过最窄也能过,大能量(抗干扰强)低能量(代表抗干扰弱)中能量也能过,那么完全不用担心中间值过不了。
招三:用同步头初始实现波特率自适应和判断数据包起始
同步头用谁?——7FH,且开始同步时连续发送。看7FH的发送0起始11111110---1停止。011111110是相当对称的,当你收到两个0中间夹了连续个1的数据后,只要用连续1的时间除以0的持续时间=7,说明这就是同步头了,且一个标准码元持续时间就是码元0的持续时间,其波特率=1/(0码元持续时间)。
举一个管窥的例子,如下:
有一个长度达16位的计数器(长管)只有一个输出例如最高位Q15(在管子末端去窥),现在根据Q15的状态1/0能窥探到什么?
(1)当Q15=1时,说明管子里至少有32768个以上的豹纹(进管子的脉冲)。
(2)Q15=0时,管子里至多有32767豹纹。
(3)如果把管子里的1称着豹纹明花,0为暗花的话,当Q15无论从1到0还是0到1的跳变,管子里一定都只有暗花了(Q14及以下全部复位了)。
(4)知道了这个原理就可以用串联(记数/或者叫推移)方法来读取前Q0到Q14位,例如当前Q15=1,单片机只送一个脉冲进去了Q15就=0了(1-0跳变),说明管子里有65535个豹纹没推出!这种情况最多推移32768次一定能将Q15推移为0,而且此时Q0到Q15就全部复位了(这叫计数复位)。
(5)当Q15=0时请自行分析,唯一要说明的是,当Q15有0到1跳变后是Q0到Q14的复位,有没有必要再推32768次把整个管子推来复位呢,没必要的,32768就是做起始基数。
不采用管窥,要读完这16位的数据需要16根口线,现在呢只需要2根,而可靠性会大大提高。损失的唯一是速度,因为并行读取要比这里的串行读取快,这样做非常值得。
再举一个例子,散热器的选取:
一般来说,稳压器和功率驱动器都是很热的设备,在弱电(强电请别对号入坐)领域,系统散热做的怎么样?是否安全?可以用加电开始时功率芯片上温度上升的速率来判断系统的热安全性。
(1)如果手摸着管子,温度上升很慢,是缓升,即在全功率(极限)常温25度下摸一分种都不烫手,就用对管子本身做高温实验了,这个管子就是在70度高温环境下都能正常工作,可以放心,热量会随着温度升高散热加快最终会恒定下来。
(2)如果摸着瞬间变得很热就取下来,是一定不行的。因为它产生大量的热,即使到了管子的高温极限,它自身高散热性能也抵消不了积热,必然被烧毁。几秒钟的触摸就可以判断了,并不需要做漫长的高温实验,所以说对任何状况的洞悉能力很重要。
本文转自网络
深圳市菲利盟电子技术有限公司