天天看點

【ARM】arm串行通信

異步通信

   所謂異步通信,是指資料傳送以字元為機關,字元與字元間的傳送是完全異步的,位與位之間的傳送基本是同步的。

異步串行通信的特點可以概括如下

   1)以字元為機關傳送資訊

   2)相鄰兩字元間的間隔是任意長

   3)因為一個字元中的比特們長度有限,是以需要的接收時鐘和發送時鐘隻要相近就可以

   4)異步方式的特點簡單地說就是:字元間異步,字元内部各位同步

異步串行方式的資料格式

   1)1位起始位,規定為低電平0

   2)5~8位資料位,即要傳送的有效資訊

   3)1位奇偶校驗位

   4)1~2位停止位,規定為高電平1

同步串行

   所謂同步通信,是指資料傳送是以資料塊(一組字元)為機關,字元與字元之間、字元内部的位與位之間都同步。

同步串行通信的特點可以概括為

   1)以資料塊為機關傳送資訊

   2)在一個資料塊(資訊幀)内,字元與字元間無間隔

   3)因為一次傳輸的資料塊中包含的資料較多,是以接收時鐘與發送時鐘嚴格同步,通常要有同步時鐘

同步串行方式的資料格式

   1)兩個同步字元作為一個資料塊(資訊幀)的起始标志

   2)n個連續傳送的資料

   3)兩個位元組循環備援校驗碼(CRC)

例子

#include "2410lib.h"

void  uart0_test(void);

int main(int argc,char **argv)

{

   sys_init();

   uart_printf("\n Embest Arm S3CEB2410 Evaluation Board\n");

while(1)

   {

       uart0_test();

   }        

}

void uart0_test()

char cInput[256];

   UINT8T ucInNo=0;

char c;

   uart_init(0,115200,0);

   uart_printf("\n UART0 Communication Test Example\n");    

   uart_printf(" Please input words, then press Enter:\n");

       c=uart_getch();

       uart_printf("%c",c);

if(c!='\r')          //enter key

           cInput[ucInNo++]=c;

else

       {

           cInput[ucInNo]='\0';

break;

       }

   }

   delay(1000);    

   uart_printf("\n The words that you input are: \n %s\n",cInput);      

   uart_printf(" end.\n");  

本文轉自infohacker 51CTO部落格,原文連結:http://blog.51cto.com/liucw/1192995

繼續閱讀