无线电电子与电气工程百科全书 PIC 控制器与计算机的接口。 无线电电子电气工程百科全书 在微控制器 (MC) 上开发设备时,经常会出现其与计算机连接以进行信息交换的问题。 大多数情况下,需要在相对较低的汇率下使用双向模式。 在最好的情况下,MK 可以具有串行接口,但大多数情况下,必须从没有配备此类接口的廉价产品中进行选择。 比如最近很流行的Microchip的PIC16F84A MK就没有这样的接口。 本文从 MC 端和计算机端考虑了串行接口软件实现的变体。 要与 MK 上的设备通信,可以使用计算机的并行 (LPT) 或串行 (COM) 端口。 第一个更容易使用 - 它可以使用相对较多数量的输入和输出信号,其电平与 TTL 兼容。 该端口的缺点是,如果在 DOS 或 Linux 下简单的 I/O 操作就足以使用它,那么为了在 Windows 下正确操作,需要严格遵守数据传输协议,这在与 MK 一起使用时效果不佳。 也可以直接控制LPT端口的各个线路,但这需要安装特殊的驱动程序。 LPT端口的“缺点”可以认为是在大多数计算机中它只有一个,并且通常被打印机占用。 COM端口的主要优点是标准的Windows编程接口(API)允许您直接控制一些输出线和控制输入线,并且还具有等待与COM端口相关的一些事件的功能。 其优点是,COM 端口根据 RS-232 标准制作,允许在设备操作期间连接和断开电缆(热插拔)。 此外,计算机几乎总是有一个空闲的 COM 端口。 该端口的缺点是信号电平与TTL不同,逻辑低电平对应-12电压,逻辑高电平对应+12V。 标准RS-232接口的实施需要MC严格遵守输出信号之间的时间间隔。 在实际情况下,微控制器的石英谐振器可能与数据传输频率不对应,并且MC本身通常忙于比形成准确的时间间隔更重要的事情。 因此,当每个数据位都由同步脉冲确认时,以编程方式实现串行同步交换选项会更容易。 所提出的接口示意图如图 1 所示。 一。 电阻分压器 R232R1 和 R4R2 用于将 RS-5 电平转换为 TTL。 为了不通过与逻辑零相对应的负电压,需要二极管VD1和VD2。 MK输出的TTL信号不需要转换,可以直接馈送到COM口的输入线上。 电阻器 R3 限制 MK 的输出电流,以防可能发生意外短路。 从图中可以看出,与计算机通信需要四根线。 计算机通过在DTR线上发出时钟脉冲、在RTS线上设置发送的数据以及在CTS线上接收接收到的数据来启动数据交换。 只有当同步信号的逻辑电平为低电平时,计算机和MK才能改变数据。 该接口的实现允许您实现数据传输的双工模式。 图中的 XS1 引脚号适用于使用标准调制解调器电缆的 DB-25F 插座。 有关其他连接器以及使用零调制解调器电缆时的引脚号,请参阅表 1。 XNUMX. 必须选择同步脉冲的频率,以便保证 MC 有时间处理来自计算机的数据,响应每个同步脉冲。 信息位按顺序传输。 在一个字节的位传输结束后,接着传输下一个字节的位,其中最重要的信息位首先被传输。 为了使接口恢复到原始状态(将传输的字节数设置为 0),计算机必须进行记录。 1.在时钟线上改变数据线的状态。 MCU 在 DTR 时钟输入的正极性脉冲下降沿时在 CTS 线上输出新的数据位,并在正极性脉冲的上升沿从 RTS 线上读取数据。 通过停止提供同步脉冲,可以随时中断交换。 数据交换时序图如图2所示。 XNUMX. 在实现接口时,建议在某些字节中传递控制值,以检查传输数据的正确性。 表中给出了 MK PIC16F84A [1] 的 C 语言程序源代码,该程序实现了所建议的接口。 2. link()过程调用位于主程序循环中,在MK运行过程中不断被调用,以控制界面的状态。 该过程使用的所有变量都被声明为全局变量。 每次调用时,它都会读取接口输入线(RB6 和 RB7)的状态,并将它们与前一次调用时的状态进行比较。 在某些条件下(同步下降、同步边沿、接口复位),根据接口逻辑执行操作。 表中给出了 Pascal (Delphi) 计算机程序的源代码。 3. 这里,调用一次链接过程来执行与MK的信息交换行为。 在调用之前,需要填充传入的缓冲区obuf。 程序结束时,接收到的数据将存放在 ibuf 数组中。 该过程打开计算机的指定 COM 端口,并使用 Windows API 函数 [2] 控制输出线的状态并轮询输入线。 信息交换完成后,端口关闭。 在链接过程中,使用 sleep() 函数实现时间延迟。 它们的值是通过MC和计算机之间的数据交换期间不存在位丢失来通过实验计算或选择的。 该示例显示了与具有频率为 4 MHz 的石英谐振器的 PIC 控制器进行交换的延迟,此外,该控制器还执行其他有用的工作。 如果交换过程花费的时间太长,可以将其移至操作系统执行的单独线程中,以便与主程序并行运行[2]。 如果信息交换需要分开读写,可以将发送和接收数据的数组分散到不同的地址,如图2所示。 XNUMX. 在MK中,可以方便地以upload()和download()过程的形式构建传输数据的格式和接收数据的使用,分别在传输之前和接收下一个字节时调用。 第一个必须通过发送的信息包中的编号返回发送字节的值,第二个接收接收到的字节的值及其在包中的编号,并且必须使用这些值来更改 MK 寄存器,写入EEPROM等。处理大小为4字节的信息包(表4)的这些程序的实现如表所示。 5. 给出了 C2C 编译器的 MK 程序示例 [3]。 该程序对于计算机来说可以使用Borland Delphi 3及以上版本编写的程序。 文学
作者:S.Kuleshov,库尔干 查看其他文章 部分 微控制器. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 用于触摸仿真的人造革
15.04.2024 Petgugu全球猫砂
15.04.2024 体贴男人的魅力
14.04.2024
其他有趣的新闻: ▪ 月球基地盾 ▪ 学生被眼睛认出
免费技术图书馆的有趣材料: 本页所有语言 www.diagram.com.ua |