日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
玩轉(zhuǎn)ARMLinux:串口通信實(shí)踐指南(armlinux使用串口)

隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的設(shè)備需要與外界進(jìn)行通信,其中串口通信是十分常見的一種通信方式。在嵌入式領(lǐng)域,串口通信也被廣泛應(yīng)用。本文將介紹如何在ARM Linux系統(tǒng)中進(jìn)行串口通信,希望對(duì)初學(xué)者有所幫助。

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出鐘樓免費(fèi)做網(wǎng)站回饋大家。

一、硬件環(huán)境搭建

在進(jìn)行串口通信時(shí),首先需要配置硬件環(huán)境。我們需要一臺(tái)基于ARM架構(gòu)的開發(fā)板,并連接一根串口線,將其一端連接到開發(fā)板的串口接口,另一端連接到PC的串口接口。這里需要注意的是,由于現(xiàn)在的PC通常都沒有串口接口,需要使用USB轉(zhuǎn)串口線進(jìn)行轉(zhuǎn)換。因此,我們需要使用一款支持USB轉(zhuǎn)串口的轉(zhuǎn)接器。

接下來,我們需要編寫一份設(shè)備樹文件,將串口的信息告訴Linux系統(tǒng)。設(shè)備樹是一種描述硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu),可以告訴內(nèi)核有哪些硬件設(shè)備,位于哪個(gè)地址,如何訪問,以及與其他設(shè)備的連接方式等信息。以下是一個(gè)示例設(shè)備樹文件:

“`

&uart1 {

pinctrl-names = “default”;

pinctrl-0 = ;

status = “okay”;

clock-frequency = ;

interrupt-parent = ;

interrupts = ;

tx-pin = ;

rx-pin = ;

};

&gpio {

status = “okay”;

};

&uart1_pins {

phandle = ;

gpio-pin = ;

linux,phandle = ;

phandle = ;

phandles = ;

};

“`

在這個(gè)設(shè)備樹文件中,我們定義了一個(gè)叫做uart1的串口設(shè)備,它位于GPIO口20和21之間。這里的clock-frequency表示串口的時(shí)鐘頻率,這里設(shè)置為24576000。interrupt-parent表示中斷信號(hào)的控制器,這里設(shè)置為GPIO。interrupts表示需要監(jiān)聽的中斷信號(hào),這里設(shè)置為GPIO口20上的上升沿觸發(fā)中斷。tx-pin表示串口的發(fā)送引腳,rx-pin表示串口的接收引腳。

二、驅(qū)動(dòng)程序開發(fā)

在硬件環(huán)境搭建好之后,我們需要開發(fā)串口驅(qū)動(dòng)程序,將數(shù)據(jù)從串口發(fā)送到PC端,并從PC端接收數(shù)據(jù)。在ARM Linux中,串口通信使用的是ttyS設(shè)備文件。我們可以通過打開這個(gè)設(shè)備文件來進(jìn)行串口通信。以下是一個(gè)最簡(jiǎn)單的串口驅(qū)動(dòng)程序的代碼:

“`

#include

#include

#include

#include

#include

int mn(int argc, char* argv[])

{

int fd;

char buf[64];

fd = open(“/dev/ttyS1”, O_RDWR | O_NOCTTY);

if (fd

{

perror(“open”);

return -1;

}

struct termios tio;

memset(&tio, 0, sizeof(tio));

cfsetspeed(&tio, B115200);

tio.c_cflag |= (CLOCAL | CREAD);

tio.c_cflag &= ~PARENB;

tio.c_cflag &= ~CSTOPB;

tio.c_cflag &= ~CSIZE;

tio.c_cflag |= CS8;

tio.c_cc[VMIN] = 0;

tio.c_cc[VTIME] = 10;

tcsetattr(fd, TCSANOW, &tio);

write(fd, “Hello, world!\r\n”, 15);

while (1)

{

int n = read(fd, buf, sizeof(buf));

if (n > 0)

{

printf(“Read %d bytes: %.*s\n”, n, n, buf);

}

}

close(fd);

return 0;

}

“`

在這個(gè)程序中,首先調(diào)用open函數(shù)打開ttyS1設(shè)備文件,然后通過設(shè)置termios結(jié)構(gòu)體中的參數(shù)來配置串口通信的格式。其中cfsetspeed函數(shù)用來設(shè)置串口的波特率,tio.c_cflag表示串口控制標(biāo)志位,CLOCAL用來表示不使用串口控制,CREAD表示允許讀寫,PARENB表示不使用奇偶校驗(yàn),CSTOPB表示使用1位停止位,CSIZE表示數(shù)據(jù)位的大小,這里設(shè)置為8位。tio.c_cc[VMIN]和tio.c_cc[VTIME]表示等待數(shù)據(jù)的最短時(shí)間和最長(zhǎng)時(shí)間,這里設(shè)置為0和10。

接著,我們使用write函數(shù)往串口里寫入一串字符串。然后通過循環(huán)調(diào)用read函數(shù)來讀取串口中的數(shù)據(jù),并打印出來。我們使用close函數(shù)關(guān)閉串口設(shè)備文件。

三、運(yùn)行程序測(cè)試

在程序開發(fā)完成之后,我們可以將程序拷貝到開發(fā)板上,并運(yùn)行。運(yùn)行程序時(shí),需要使用root權(quán)限,否則會(huì)出現(xiàn)權(quán)限不足的錯(cuò)誤。我們可以使用sudo命令來運(yùn)行程序,如下所示:

“`

sudo ./serial

“`

運(yùn)行程序之后,程序?qū)⑾虼谥邪l(fā)送一串字符串,并等待從串口中讀取到數(shù)據(jù)。我們可以在PC端使用串口調(diào)試助手等工具,向串口中發(fā)送數(shù)據(jù)。如果一切正常,程序?qū)?huì)讀取到數(shù)據(jù),并在控制臺(tái)中輸出。

相關(guān)問題拓展閱讀:

  • 如何去掉ARM-LINUX啟動(dòng)時(shí)輸出到串口的調(diào)試信息

如何去掉ARM-LINUX啟動(dòng)時(shí)輸出到串口的調(diào)試信息

啟動(dòng)時(shí)的內(nèi)核信息都是通過巧頃printk輸出的,查了下頭文件kernel.h,讓寬絕有這樣的語句

#ifdef CONFIG_PRINTK

alinkage int printk(const char * fmt, …)

__attribute__ ((format (printf, 1, 2)));

#else

static inline int printk(const char *s, …)

__attribute__ ((format (printf, 1, 2)));

static inline int printk(const char *s, …) { return 0; }

#endif

在kernel/printk.c中,同樣可以看到在沒有定義CONFIG_PRINTK的時(shí)候其坦姿代碼都是灰的。

因此,去掉CONFIG_PRINTK的定義即可。

關(guān)注這個(gè)問題

關(guān)于arm linux使用串口的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


新聞名稱:玩轉(zhuǎn)ARMLinux:串口通信實(shí)踐指南(armlinux使用串口)
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/dhseegh.html