0引言
PC机与单片机组成的主从系统很常见,在很多领域中都得到了应用。在这些系统中,PC机与单片机之间一般采用串行通信方式,按照一定的格式,进行数据、指令的交换,完成PC机对单片机的控制、数据前送,或者单片机上数据、状态等信息的回送。
当单片机数量较多时,比较容易实现PC机对所有单片机的控制。一般在这种情况下,采用广播的方式。
所有单片机都挂在绕行电感器一条串行数据总线上,只需对单片机进行地电感生产址编码,PC机将地址数据和控制报文进行广播,单片机接收广播数据后进行地址比对,筛选出所需的数据,完成相应的数据传送。
如果PC机要对单片机多机进行广播,并回传所有单片机的信息,即单片机还要发送数据至PC机,再加上单片机数量较多(大于100个单片机),则要实现PC机与单片机多机的互相通信,难度是比较大的。
本文提出了一种切实可行的方法,通过实际电路搭建和调试,实现了PC机与单片机多机的互相通信,达到了预定的目标,使该系统具有如下功能:
(1)PC机可以对所有100多个单片机进行控制,根据需要,发送不同控制字到达每个单片机;
(2)PC机对单片机的状态修改是随机的、没有规律的;
(3)所有单片机将自身的一些状态信息按照顺序回传至PC机。
1互通信的几种实现方法
PC机至多个单片机的广播比较简单,难度较大的是多个单片机发送数据至PC机。由于100多个单片机均挂在一个数据总线上,系统设计的难点就在于数据总线控制权的传递,绝对不能出现有2个或者2个以上设备同时向总线上发电感厂家送数据。系统设计之初,考虑了两种总线控制方式有接力式和点名式:
(1)接力式总线控制方式
这种控制方式的基本思路是:初始化后,所有单片机在接收完PC机数据后,处于串行接收状态,不占用总线控制权。PC机发出回送开始指令,第1个单片机响应该指令,并立即占有总线控制权,向总线上的PC机发送数据,数据发送完成后,紧接着第1个单片机发送控制指令,通知第2个单片机,同时第1个单片机退出总线控制权,处于接收状态;第2个单片机接收到第1个单片机的开始指令后,和前面第1个单片机一样,开始向总线上发送数据,并在结束传送之后通知第3个单片机,如此这般,不断接力传输,轮流控制总线,直至最后一个单片机完成数据传送。在单片机控制总线,进行回传的过程中,如果要通过PC机向某个或者某些单片机传送数据时,PC机软件会自动将这些数据存储下来,等到最后一个单片机接收向PC机送数据之后,PC机再占用数据总线,开始向单片机传送数据。
(2)点名式总线控制方式
该控制方式与接力式控制方式大体相同,不同的是这种控制方式需要等待PC机点名指令。系统初始化后,功率电感器单片机接收PC机指令、数据之后,PC机发送点名指令,让第1个单片机开始传送数据,第1个单片机接收该指令后,立即占用总线,开始传送数据,传送结束后,发送结束指令至PC机,电感磁芯PC机在接收该结束指令后,立即占用总线,再发送点名指令,让第2个单片机开始传送数据,如此不断动作,直至最后一个单片机结束传送。
在单片机传送数据时,如果PC机要送数据至单片机,可以在接收完某个单片机数据之后,暂停发送点名指令,直接发送数据至某个或者某些单片机。待数据发送完成后,继续接上原先的中断的点名顺序号,继续向后点名、传送数据。综合考虑这两种总线控制方式,不难发现,由于没有来回传递点名的指令时间开销,接力式的传输效率会略高于点名式,所以,一开始还是采用了接力式的控制方式。
但是在进行大的系统联调时,问题出现了。由于接力式脱离PC机的过程干预,一旦出现某个单片机程序跑飞、死机时,整个程序就没法进行下去,一直处于等待状态,整个系统就瘫痪了。调试过程中出现过好几次死机的情况。最后,不得不回头修改总体方案,采用点名式的控制方式。如果中间某个单片机出现异常,没有按照预定的程序回传数据,则PC机就可以判断该单片机死机,在经历过一段等待时间后,自行跳过该单片机,点名下一个单片机,继续后续的回传和程序。如果该故障单片机还在占用总线,影响下一个单片机的工作,则对单片机公用的复位端发送一个整体复位信号,让所有单片机复位。经过重新调整方案后,经过长时间运行,均没有出现整机死机的状况,总体运行情况良好。另外,这种控制方式还有其他两种控制方式所不具有的优势:
开关电源的纹波和噪声开关电源(包括AC/DC转换器、DC/DC转换器、AC/DC模块和DC/DC模块)与线性电源相比较,最突出的优点是转换效率高,一般可达80%~85%,高的可达90%~97%;其次,开关电源采用高频变压
低边与高边电流检测目前,电子系统的电源管理芯片通过有效的功率分配优化系统效率。这种管理方式的关键是电流检测,它不仅能帮助系统维持所需要的功率电平,还可通过伺服调整来维护电子系统的正常运行,防止电路失效和电池过放电。电流
[TI]TL494 问题请教大家好!
TL494内部,第三脚。
0.7mA恒流源是做什么用的?
注意与之相联接的各运放输出端均串联有二极管,集只能输出电流。
再考虑一下各运放输出均为低时会发生什么。
学习
不过T