STM32和樹莓派串口透傳

最近做一個(gè)項(xiàng)目需要STM32和樹莓派進(jìn)行串口通信亲轨,實(shí)現(xiàn)原理如下:

第一步:使用USB轉(zhuǎn)TTL分別調(diào)試STM32和樹莓派的串口透傳醇坝,確比拍可以通信;

第二步:確保第一步成功后坠非,將樹莓派和STM32連接敏沉,進(jìn)行串口透傳才菠。

下面進(jìn)行具體實(shí)驗(yàn)吧~

樹莓派環(huán)境串口透傳

在開始前說明以下幾點(diǎn):

1被啼、樹莓派UART端口的位置:TXD位于HEAD-8孙技;RXD位于HEAD-10踱承;GND位于HEAD-6(可選其他GND)。

2攒菠、樹莓派的TXD應(yīng)接USB轉(zhuǎn)串口設(shè)備的RXD迫皱,當(dāng)然如果測試失敗請(qǐng)交換RXD和TXD的順序。

樹莓派串口通信需要配置環(huán)境辖众,主要修改兩處卓起,具體如下:

第一處:進(jìn)入? /boot/cmdline.txt 文件

輸入以下指令:

sudo nano /boot/cmdline.txt

刪除以下部分:

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

最終變?yōu)椋?/p>

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

第二步:進(jìn)入??/etc/inittab? 文件

輸入以下指令:

sudo nano /etc/inittab

注釋最后一行內(nèi)容:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

配置完之后便可測試一下樹莓派的UART是否正常工作,而minicom便是一個(gè)簡單好用的工具凹炸。minicom是linux/樹莓派平臺(tái)串口調(diào)試工具戏阅,相當(dāng)于windows上的串口調(diào)試助手。此時(shí)需要先安裝minicom:

sudo apt-get install minicom

接下來啟動(dòng)minicom工具:

minicom -b 9600 -o -D /dev/ttyAMA0

#-b代表波特率啤它,-D代表端口奕筐,/dev/ttyAMA0 類似于windows中的COM1,-o功能暫時(shí)未知变骡。

效果如下:

注意:

1离赫、minicom發(fā)送內(nèi)容直接在控制臺(tái)中輸入內(nèi)容即可,如果minicom打開了回顯可在控制臺(tái)中觀察到輸出內(nèi)容塌碌,如果回顯關(guān)閉則控制臺(tái)中沒人任何反應(yīng)渊胸,千萬不要以為minicom沒有正常工作。

2台妆、minicom回顯控制翎猛,先Ctrl+A,再E频丘“斐桑可翻轉(zhuǎn)回顯狀態(tài)(原來回顯打開則此事回顯關(guān)閉)

3、minicom回顯關(guān)閉搂漠,先Ctrl+A,再Q(mào)某弦。?

minicom僅滿足調(diào)試用途桐汤,如果需要編程解決問題那么python的serial擴(kuò)展庫——pyserial則是一個(gè)不錯(cuò)的選擇。

收下需要安裝pyserial擴(kuò)展庫靶壮,可使用pip或者easy_install安裝怔毛,也可以直接選擇apt-get工具安裝。

若使用apt-get工具安裝腾降,可輸入以下指令:

sudo apt-get install python-serial

當(dāng)以上步驟成功后拣度,就可以使用Python編寫樹莓派串口透傳程序,具體Demo如下:

# -*- coding: utf-8 -*

import serial

import time

# 打開串口

ser = serial.Serial("/dev/ttyAMA0", 9600)

def main():

? ? while True:

? ? ? ? # 獲得接收緩沖區(qū)字符

? ? ? ? count = ser.inWaiting()

? ? ? ? if count != 0:

? ? ? ? ? ? # 讀取內(nèi)容并回顯

? ? ? ? ? ? recv = ser.read(count)

? ? ? ? ? ? ser.write(recv)

? ? ? ? # 清空接收緩沖區(qū)

? ? ? ? ser.flushInput()

? ? ? ? # 必要的軟件延時(shí)

? ? ? ? time.sleep(0.1)

if __name__ == '__main__':

? ? try:

? ? ? ? main()

? ? except KeyboardInterrupt:

? ? ? ? if ser != None:

? ? ? ? ? ? ser.close()

此時(shí)實(shí)現(xiàn)了樹莓派的串口通信功能。

STM32環(huán)境串口透傳

接下來實(shí)現(xiàn)STM32串口透傳抗果,這里我使用的MCU是STM32F103C8T6筋帖,配置UART1,STM32不需要配置環(huán)境直接在Demo中配置GPIO即可冤馏,將USB轉(zhuǎn)TTL的TX連接STM32的RX(PA10)日麸,USB轉(zhuǎn)TTL的RX連接STM32的TX(PA9),核心Demo如下:

#include "usart1.h"

#include <stdarg.h>

void USART1_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);


? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? GPIO_Init(GPIOA, &GPIO_InitStructure);? ?


? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

? GPIO_Init(GPIOA, &GPIO_InitStructure);?


USART_InitStructure.USART_BaudRate = 115200;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No ;?

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure);?

USART_Cmd(USART1, ENABLE);

}

void UART1SendByte(unsigned char SendData)

{ ?

? ? ? ? USART_SendData(USART1,SendData);

? ? ? ? while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); ? ?

}?

unsigned char UART1GetByte(unsigned char* GetData)

{? ?

? ? ? ? if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

? ? ? ? {? return 0;

}

? ? ? ? *GetData = USART_ReceiveData(USART1);

? ? ? ? return 1;

}

void UART1Test(void)

{

? ? ? unsigned char i = 0;

? ? ? while(1)

? ? ? {? ?

while(UART1GetByte(&i))

? ? ? ? {

? ? ? ? USART_SendData(USART1,i);

? ? ? ? }? ? ?

? ? ? }? ?

}

當(dāng)STM32測試成功后逮光,恭喜各位代箭,將樹莓派的TX和STM32的RX(PA10)連接,樹莓派的RX和STM32的TX連接(PA9)涕刚,注意一定要將STM32的GND和樹莓派的GND連接嗡综,即可實(shí)現(xiàn)STM32和樹莓派串口通信。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杜漠,一起剝皮案震驚了整個(gè)濱河市蛤高,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碑幅,老刑警劉巖戴陡,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沟涨,居然都是意外死亡恤批,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門裹赴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喜庞,“玉大人,你說我怎么就攤上這事棋返⊙佣迹” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵睛竣,是天一觀的道長晰房。 經(jīng)常有香客問我,道長射沟,這世上最難降的妖魔是什么殊者? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮验夯,結(jié)果婚禮上猖吴,老公的妹妹穿的比我還像新娘。我一直安慰自己挥转,他們只是感情好海蔽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布共屈。 她就那樣靜靜地躺著,像睡著了一般党窜。 火紅的嫁衣襯著肌膚如雪拗引。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天刑然,我揣著相機(jī)與錄音寺擂,去河邊找鬼。 笑死泼掠,一個(gè)胖子當(dāng)著我的面吹牛怔软,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播择镇,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼挡逼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腻豌?” 一聲冷哼從身側(cè)響起家坎,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吝梅,沒想到半個(gè)月后虱疏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苏携,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年做瞪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片右冻。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡装蓬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纱扭,到底是詐尸還是另有隱情牍帚,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布乳蛾,位于F島的核電站暗赶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屡久。R本人自食惡果不足惜忆首,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望被环。 院中可真熱鬧,春花似錦详幽、人聲如沸筛欢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽版姑。三九已至柱搜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剥险,已是汗流浹背聪蘸。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留表制,地道東北人健爬。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像么介,于是被迫代替她去往敵國和親娜遵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容