Linux PC和51系列單片機(jī)串行通信的設(shè)計(jì)
初始化函數(shù)如下:
初始化以后就開始發(fā)送和接收數(shù)據(jù),先將一個(gè)字符串發(fā)送給單片機(jī),單片機(jī)接收到數(shù)據(jù)后,將數(shù)據(jù)返回給上位機(jī)。但需要注意的是,由于上位機(jī)速度比單片機(jī)快得多,一次不能發(fā)送過多的數(shù)據(jù),否則極有可能使發(fā)送緩沖區(qū)溢出而丟失數(shù)據(jù),發(fā)送過后,還需等待一段時(shí)間,使單片機(jī)將數(shù)據(jù)完全發(fā)送到上位機(jī)后,再進(jìn)行讀取。
2.2 直接讀寫串口硬件端口的方法
在使用這個(gè)方法的時(shí)候,必須對串口通信的硬件原理有一些了解。PC機(jī)的串口是由通用異步收發(fā)器8250UART(或16550)為核心構(gòu)成的,寄存器基地址分別是0x3f8(COM1)和0x2f8(COM2),還有其他的一些用于控制的寄存器。有很多寄存器是與Modem相關(guān)的,而在使用三線制進(jìn)行通信時(shí)用不到,只用關(guān)心與通信相關(guān)的寄存器,比起使用為通用功能編寫的串口設(shè)備驅(qū)動(dòng)程序來,直接讀寫相關(guān)寄存器效率更高。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論