<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RS485的PC與ARM之間文件傳輸的實(shí)現

基于RS485的PC與ARM之間文件傳輸的實(shí)現

作者: 時(shí)間:2016-12-19 來(lái)源:網(wǎng)絡(luò ) 收藏

  1. 引言

本文引用地址:http://dyxdggzs.com/article/201612/341758.htm

  在產(chǎn)業(yè)控制場(chǎng)合中,常會(huì )要求通過(guò)PC向嵌進(jìn)式微機傳輸圖片文件、數據文件等。由于價(jià)格便宜、操縱簡(jiǎn)單、使用者可以隨意編寫(xiě)應用協(xié)議等優(yōu)點(diǎn),被廣泛應用在中等長(cháng)間隔的控制通訊中。因此,利用實(shí)現PC到嵌進(jìn)式系統的文件傳輸,十分具有現實(shí)意義。

  本文以基于9的三星S3C2410A為嵌進(jìn)式微處理器,嵌進(jìn)式Linux為嵌進(jìn)式操縱系統搭建一個(gè)嵌進(jìn)式系統,成功實(shí)現了PC通過(guò)向嵌進(jìn)式系統傳輸文件。

  2. RS485接口先容

  RS485是一種多點(diǎn)、雙向、平衡傳輸規范,被命名為T(mén)IA/EIA-485-A標準。

  RS485由RS232發(fā)展而來(lái),它改進(jìn)了RS232通訊間隔短、速率低的缺點(diǎn)。RS485是一種平衡通訊接口,傳輸速率最高可達10Mbit/s,最大傳輸間隔約為1219m,并答應在一條平衡總線(xiàn)上連接最多32個(gè)設備。RS485的共模輸出電壓是-7V~+12V[5]。

  3. 硬件設計

  本文采用Friendly公司的Nano2410V2核心板作為中心處理器模塊,并配以外圍電路。Nano2410V2核心板以S3C2410A為CPU[1]。

  把S3C2410A的UART0分配給RS485總線(xiàn),由芯片MAX485完成TTL到差分信號的轉換,RS485方向控制線(xiàn)占用GPB2,如圖1所示[2]。

    

 

  圖1 硬件連線(xiàn)圖

  PC上使用RS232/RS485轉換器,完成RS232到RS485的轉換。

  4. RS485驅動(dòng)程序

  RS485標準只對接口的電氣特性作出規定,而不涉及插件、電纜或協(xié)議[5]。因此,在Linux下使用RS485接口,可借助串口驅動(dòng)程序實(shí)現。但是,RS485是半雙工的,比起RS232,需要多加一個(gè)I/O口來(lái)控制RS485的方向,該I/O口在發(fā)送數據時(shí)置高,接收數據時(shí)置低。

  發(fā)送數據:

  ioctl(fd485, 1, 0); //fd485:方向控制I/O口驅動(dòng)設備文件的fd

  write(fdtty, &bufout, 1); //fdtty:串口驅動(dòng)設備文件的fd

  delay();

  讀取數據:

  ioctl(fd485, 0, 0);

  read(fdtty, &bufin, 1) ;

  方向控制線(xiàn)的驅動(dòng)程序設計:

  定義file_operatiONs[3][4]:

  static struct file_operations io485_fops=

  {

  owner:THIS_MODULE,

  ioctl:io485_ioctl

  };

  函數io485_ioctl用于設置RS485接口的方向:cmd為0時(shí),設為輸進(jìn);cmd為1時(shí),設為輸出[3][4]。

  static int io485_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

  {

  switch(cmd)

  {

  case 0:

  case 1:

  write_gpio_bit(GPIO_B2, cmd);

  return 0;

  default:

  return -EINVAL;

  }

  }

  5. 自定義數據幀格式

  在這里數據幀格式指的是發(fā)送方發(fā)送一個(gè)文件或者接收方接收一個(gè)文件的完整過(guò)程所需要的每一個(gè)字節元素的含義[5]。

  本文定義格式如下:

  (1) 開(kāi)始符:標志開(kāi)始傳輸文件,1個(gè)字節。

  (2) 文件名長(cháng)度:所傳輸文件的文件名的長(cháng)度,1個(gè)字節。

  (3) 文件名:所傳輸文件的文件名,字節數由文件名長(cháng)度決定。

  (4) 文件大?。核鶄鬏斘募拇笮?,4個(gè)字節。

  (5) 文件內容:所傳輸文件的數據,字節數由文件大小決定。

  (6) ACK:確認信號。接收方給發(fā)送方的反饋信號,表示數據接收完成,1個(gè)字節。

  6. 程序流程

  本文對于傳輸文件,采用的方法為:發(fā)送端打開(kāi)要傳輸的文件,讀取文件數據,然后通過(guò)串口向外發(fā)送;接收端先建立一個(gè)空文件,然后把從RS485接口讀到的內容寫(xiě)進(jìn)該文件里。

  數據校驗:為防止文件數據在傳輸的過(guò)程中,丟失或出錯,進(jìn)行校驗是必要的。在這里,采用的校驗方法是:發(fā)送端每發(fā)送n個(gè)字節,就取1個(gè)字節作為校驗字節。該字節是前n個(gè)字節異或運算的結果;接收端每接收n個(gè)字節,就對該n個(gè)字節進(jìn)行異或運算,并把結果與校驗字節作比較,相同則傳輸繼續進(jìn)行,不同則要求發(fā)送端重新發(fā)送。

  在本文中,作為文件接收方,PC作為文件發(fā)送方,接收方程序流程圖如圖5所示,發(fā)送方的程序流程與接收方互補即可。

    

 

  圖2 程序流程圖

  7. 結語(yǔ)

  通過(guò)PC向嵌進(jìn)式微機傳輸文件在嵌進(jìn)式系統應用中經(jīng)常需要。而RS485由于其突出優(yōu)點(diǎn),廣泛應用在產(chǎn)業(yè)控制中。因此通過(guò)RS485實(shí)現PC到嵌進(jìn)式系統的文件傳輸,十分具有現實(shí)意義。

  本文作者創(chuàng )新點(diǎn):提出了一種簡(jiǎn)單的RS485驅動(dòng)程序設計方法,并以一種簡(jiǎn)單、實(shí)用、可靠的方法成功實(shí)現了PC通過(guò)RS485向ARM傳輸文件。



關(guān)鍵詞: RS485 ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>