99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分析一下串口發(fā)送與接收模塊的設(shè)計(jì)代碼

電子工程師 ? 來源:電子工程世界 ? 作者:小梅哥 ? 2021-04-19 11:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

串口發(fā)送與接收模塊設(shè)計(jì)代碼分析

1.1Tx_Bps_Gen

Tx_Bps_Gen為發(fā)送波特率生成模塊,每當(dāng)有Byte_En信號到來時(shí),即開始產(chǎn)生發(fā)送一個完整字節(jié)的數(shù)據(jù)需要的完整波特率時(shí)鐘信號。

本設(shè)計(jì),波特率支持9600bps到921600bps。例如,需要產(chǎn)生的波特率時(shí)鐘為9600bps,即波特率時(shí)鐘頻率為9600Hz,周期為104.17us。生成9600Hz波特率時(shí)鐘的核心思想就是對系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù),這里設(shè)定系統(tǒng)時(shí)鐘為50MHz,則一個時(shí)鐘的周期為20ns,我們只需要對系統(tǒng)時(shí)鐘計(jì)數(shù)5208次,每計(jì)數(shù)5208次產(chǎn)生一個時(shí)鐘周期的高電平脈沖,即可實(shí)現(xiàn)生成9600Hz波特率時(shí)鐘的功能。相應(yīng)代碼如下所示:

018 parameter system_clk = 50_000_000; /*輸入時(shí)鐘頻率設(shè)定,默認(rèn)50M*/

019

020 /*根據(jù)輸入時(shí)鐘頻率計(jì)算生成各波特率時(shí)分頻計(jì)數(shù)器的計(jì)數(shù)最大值*/

021 localparam bps9600 = system_clk/9600 - 1;

022 localparam bps19200 = system_clk/19200 - 1;

023 localparam bps38400 = system_clk/38400 - 1;

024 localparam bps57600 = system_clk/57600 - 1;

025 localparam bps115200 = system_clk/115200 - 1;

026 localparam bps230400 = system_clk/230400 - 1;

027 localparam bps460800 = system_clk/460800 - 1;

028 localparam bps921600 = system_clk/921600 - 1;

029

030 reg [31:0]BPS_PARA;/*波特率分頻計(jì)數(shù)器的計(jì)數(shù)最大值*/

031

032 always@(posedge Clk or negedge Rst_n)

033 if(!Rst_n)begin

034 BPS_PARA 《= bps9600;/*復(fù)位時(shí)波特率默認(rèn)為9600bps*/

035 end

036 else begin

037 case(Baud_Set)/*根據(jù)波特率控制信號選擇不同的波特率計(jì)數(shù)器計(jì)數(shù)最大值*/

038 3‘d0: BPS_PARA 《= bps9600;

039 3’d1: BPS_PARA 《= bps19200;

040 3‘d2: BPS_PARA 《= bps38400;

041 3’d3: BPS_PARA 《= bps57600;

042 3‘d4: BPS_PARA 《= bps115200;

043 3’d5: BPS_PARA 《= bps230400;

044 3‘d6: BPS_PARA 《= bps460800;

045 3’d7: BPS_PARA 《= bps921600;

046 default: BPS_PARA 《= bps9600;

047 endcase

048 end

049

050 //=========================================================

051 reg[12:0]Count;

052

053 reg n_state;

054 localparam IDEL_1 = 1‘b0,

055 SEND = 1’b1;

056

057 reg BPS_EN;

058

059 /*-------波特率時(shí)鐘生成控制邏輯--------------*/

060 always@(posedge Clk or negedge Rst_n)

061 if(!Rst_n)begin

062 BPS_EN 《= 1‘b0;

063 n_state 《= IDEL_1;

064 end

065 else begin

066 case(n_state)

067 IDEL_1:

068 if(Byte_En)begin/*檢測到字節(jié)發(fā)送使能信號,則啟動波特率生成進(jìn)程,同時(shí)進(jìn)入發(fā)送狀態(tài)*/

069 BPS_EN 《= 1’b1;

070 n_state 《= SEND;

071 end

072 else begin

073 n_state 《= IDEL_1;

074 BPS_EN 《= 1‘b0;

075 end

076 SEND:

077 if(Tx_Done == 1)begin/*發(fā)送完成,關(guān)閉波特率生成進(jìn)程,回到空閑狀態(tài)*/

078 BPS_EN 《= 1’b0;

079 n_state 《= IDEL_1;

080 end

081 else begin

082 n_state 《= SEND;

083 BPS_EN 《= 1‘b1;

084 end

085 default:n_state 《= IDEL_1;

086 endcase

087 end

088

089 /*-------波特率時(shí)鐘生成定時(shí)器--------------*/

090 always@(posedge Clk or negedge Rst_n)

091 if(!Rst_n)

092 Count 《= 13’d0;

093 else if(BPS_EN == 1‘b0)

094 Count 《= 13’d0;

095 else begin

096 if(Count == BPS_PARA)

097 Count 《= 13‘d0;

098 else

099 Count 《= Count + 1’b1;

100 end

101

102 /*輸出數(shù)據(jù)接收采樣時(shí)鐘*/

103 //-----------------------------------------------

104 always @(posedge Clk or negedge Rst_n)

105 if(!Rst_n)

106 Bps_Clk 《= 1‘b0;

107 else if(Count== 1)

108 Bps_Clk 《= 1’b1;

109 else

110 Bps_Clk 《= 1‘b0;

第18行“parameter system_clk = 50_000_000;”,這里用一個全局參數(shù)定義了系統(tǒng)時(shí)鐘,暫時(shí)設(shè)定為50M,可根據(jù)實(shí)際使用的板卡上的工作時(shí)鐘進(jìn)行修改。

所謂波特率生成,就是用一個定時(shí)器來定時(shí),產(chǎn)生頻率與對應(yīng)波特率時(shí)鐘頻率相同的時(shí)鐘信號。例如,我們使用波特率為115200bps,則我們需要產(chǎn)生一個頻率為115200Hz的時(shí)鐘信號。那么如何產(chǎn)生這樣一個115200Hz的時(shí)鐘信號呢?這里,我們首先將115200Hz時(shí)鐘信號的周期計(jì)算出來,1秒鐘為1000_000_000ns,因此波特率時(shí)鐘的周期Tb= 1000000000/115200 =8680.6ns,即115200信號的一個周期為8680.6ns,那么,我們只需要設(shè)定我們的定時(shí)器定時(shí)時(shí)間為8680.6ns,每當(dāng)定時(shí)時(shí)間到,產(chǎn)生一個系統(tǒng)時(shí)鐘周期長度的高脈沖信號即可。系統(tǒng)時(shí)鐘頻率為50MHz,即周期為20ns,那么,我們只需要計(jì)數(shù)8680/20個系統(tǒng)時(shí)鐘,就可獲得8680ns的定時(shí),即bps115200=Tb/Tclk - 1=Tb*fclk - 1=fclk/115200-1。相應(yīng)的,其它波特率定時(shí)值的計(jì)算與此類似,這里小梅哥就不再一一分析。20行至28行為波特率定時(shí)器定時(shí)值的計(jì)算部分。

為了能夠通過外部控制波特率,設(shè)計(jì)中使用了一個3位的波特率選擇端口:Baud_Set。通過給此端口不同的值,就能選擇不同的波特率,此端口控制不同波特率的原理很簡單,就是一個多路選擇器,第32行至第48行即為此多路選擇器的控制代碼, Baud_Set的值與各波特率的對應(yīng)關(guān)系如下:

000 :9600bps;

001 :19200bps;

010 :38400bps;

011 :57600bps;

100 :115200bps;

101 :230400bps;

110 :460800bps;

111 :921600bps;

1.2Uart_Byte_Tx

Uart_Byte_Tx為字節(jié)發(fā)送模塊,該模塊在波特率時(shí)鐘的節(jié)拍下,依照UART通信協(xié)議發(fā)送一個完整的字節(jié)的數(shù)據(jù)。當(dāng)一個字節(jié)發(fā)送完畢后,Tx_Done產(chǎn)生一個高脈沖信號,以告知其它模塊或邏輯一個字節(jié)的數(shù)據(jù)已經(jīng)傳輸完成,可以開始下一個字節(jié)的發(fā)送了。其發(fā)送一個字節(jié)數(shù)據(jù)的實(shí)現(xiàn)代碼如下:

33 /*計(jì)數(shù)波特率時(shí)鐘,11個波特率時(shí)鐘為一次完整的數(shù)據(jù)發(fā)送過程*/

34 always@(posedge Clk or negedge Rst_n)

35 if(!Rst_n)

36 Bps_Clk_Cnt 《= 4’b0;

37 else if(Bps_Clk_Cnt == 4‘d11)

38 Bps_Clk_Cnt 《= 4’b0;

39 else if(Bps_Clk)

40 Bps_Clk_Cnt 《= Bps_Clk_Cnt + 1‘b1;

41 else

42 Bps_Clk_Cnt 《= Bps_Clk_Cnt;

43

44 /*生成數(shù)據(jù)發(fā)送完成標(biāo)志信號*/

45 always@(posedge Clk or negedge Rst_n)

46 if(!Rst_n)

47 Tx_Done 《= 1’b0;

48 else if(Bps_Clk_Cnt == 4‘d11)

49 Tx_Done 《= 1’b1;

50 else

51 Tx_Done 《= 1‘b0;

52

53 /*在開始發(fā)送起始位的時(shí)候就讀取并寄存Data_Byte,以免Data_Byte變化導(dǎo)致數(shù)據(jù)的丟失*/

54 always@(posedge Clk or negedge Rst_n)

55 if(!Rst_n)

56 Data = 8’d0;

57 else if(Bps_Clk & Bps_Clk_Cnt == 4‘d1)

58 Data 《= Data_Byte;

59 else

60 Data 《= Data;

61

62 /*發(fā)送數(shù)據(jù)序列機(jī)*/

63 always@(posedge Clk or negedge Rst_n)

64 if(!Rst_n)

65 Rs232_Tx 《= 1’b1;

66 else begin

67 case(Bps_Clk_Cnt)

68 4‘d1: Rs232_Tx 《= 1’b0;

69 4‘d2: Rs232_Tx 《= Data[0];

70 4’d3: Rs232_Tx 《= Data[1];

71 4‘d4: Rs232_Tx 《= Data[2];

72 4’d5: Rs232_Tx 《= Data[3];

73 4‘d6: Rs232_Tx 《= Data[4];

74 4’d7: Rs232_Tx 《= Data[5];

75 4‘d8: Rs232_Tx 《= Data[6];

76 4’d9: Rs232_Tx 《= Data[7];

77 4‘d10: Rs232_Tx 《= 1’b1;

78 default:Rs232_Tx 《= 1‘b1;

79 endcase

80 end

在UART協(xié)議中,一個完整的字節(jié)包括一位起始位、8位數(shù)據(jù)位、一位停止位即總共十位數(shù)據(jù),那么,要想完整的實(shí)現(xiàn)這十位數(shù)據(jù)的發(fā)送,就需要11個波特率時(shí)鐘脈沖,如下所示:

分析一下串口發(fā)送與接收模塊的設(shè)計(jì)代碼

BPS_CLK信號的第一個上升沿到來時(shí),字節(jié)發(fā)送模塊開始發(fā)送起始位,接下來的2到9個上升沿,發(fā)送8個數(shù)據(jù)位,第10個上升沿到第11個上升沿為停止位的發(fā)送。

單個串口接收模塊中實(shí)現(xiàn)串口數(shù)據(jù)接收的主要代碼如下所示:

025 always @ (posedge Clk or negedge Rst_n)

026 if(!Rst_n) begin

027 Rs232_Rx0 《= 1’b0;

028 Rs232_Rx1 《= 1‘b0;

029 Rs232_Rx2 《= 1’b0;

030 Rs232_Rx3 《= 1‘b0;

031 end

032 else begin

033 Rs232_Rx0 《= Rs232_Rx;

034 Rs232_Rx1 《= Rs232_Rx0;

035 Rs232_Rx2 《= Rs232_Rx1;

036 Rs232_Rx3 《= Rs232_Rx2;

037 end

038

039 wire neg_Rs232_Rx= Rs232_Rx3 & Rs232_Rx2 & ~Rs232_Rx1 & ~Rs232_Rx0;

040

041 assign Byte_En = neg_Rs232_Rx;

042

043 /*----------計(jì)數(shù)采樣時(shí)鐘--------------*/

044 /*9倍波特率采樣時(shí)鐘,故一個完整的接收過程有90個波特率時(shí)鐘*/

045 reg[6:0]Sample_Clk_Cnt;

046 always @ (posedge Clk or negedge Rst_n)

047 if(!Rst_n)

048 Sample_Clk_Cnt 《= 7’d0;

049 else if(Sample_Clk)begin

050 if(Sample_Clk_Cnt == 7‘d89)

051 Sample_Clk_Cnt 《= 7’d0;

052 else

053 Sample_Clk_Cnt 《= Sample_Clk_Cnt + 1‘b1;

054 end

055 else

056 Sample_Clk_Cnt 《= Sample_Clk_Cnt;

057

058 reg [1:0]Start_Bit; /*起始位,這里雖然定義,但并未使用該位來判斷接收數(shù)據(jù)的正確性,即默認(rèn)接收都是成功的*/

059 reg [1:0]Stop_Bit; /*停止位,這里雖然定義,但并未使用該位來判斷接收數(shù)據(jù)的正確性,即默認(rèn)接收都是成功的*/

060 reg [1:0] Data_Tmp[7:0];/*此部分較為復(fù)雜,請參看說明文檔中相關(guān)解釋*/

061

062 always @ (posedge Clk or negedge Rst_n)

063 if(!Rst_n)begin

064 Data_Tmp[0] 《= 2’d0;

065 Data_Tmp[1] 《= 2‘d0;

066 Data_Tmp[2] 《= 2’d0;

067 Data_Tmp[3] 《= 2‘d0;

068 Data_Tmp[4] 《= 2’d0;

069 Data_Tmp[5] 《= 2‘d0;

070 Data_Tmp[6] 《= 2’d0;

071 Data_Tmp[7] 《= 2‘d0;

072 Start_Bit 《= 2’d0;

073 Stop_Bit 《= 2‘d0;

074 end

075 else if(Sample_Clk)begin

076 case(Sample_Clk_Cnt)

077 7’d0:

078 begin

079 Data_Tmp[0] 《= 2‘d0;

080 Data_Tmp[1] 《= 2’d0;

081 Data_Tmp[2] 《= 2‘d0;

082 Data_Tmp[3] 《= 2’d0;

083 Data_Tmp[4] 《= 2‘d0;

084 Data_Tmp[5] 《= 2’d0;

085 Data_Tmp[6] 《= 2‘d0;

086 Data_Tmp[7] 《= 2’d0;

087 Start_Bit 《= 2‘d0;

088 Stop_Bit 《= 2’d0;

089 end

090 7‘d3,7’d4,7‘d5: Start_Bit 《= Start_Bit + Rs232_Rx;

091 7’d12,7‘d13,7’d14:Data_Tmp[0] 《= Data_Tmp[0] + Rs232_Rx;

092 7‘d21,7’d22,7‘d23:Data_Tmp[1] 《= Data_Tmp[1] + Rs232_Rx;

093 7’d30,7‘d31,7’d32:Data_Tmp[2] 《= Data_Tmp[2] + Rs232_Rx;

094 7‘d39,7’d40,7‘d41:Data_Tmp[3] 《= Data_Tmp[3] + Rs232_Rx;

095 7’d48,7‘d49,7’d50:Data_Tmp[4] 《= Data_Tmp[4] + Rs232_Rx;

096 7‘d57,7’d58,7‘d59:Data_Tmp[5] 《= Data_Tmp[5] + Rs232_Rx;

097 7’d66,7‘d67,7’d68:Data_Tmp[6] 《= Data_Tmp[6] + Rs232_Rx;

098 7‘d75,7’d76,7‘d77:Data_Tmp[7] 《= Data_Tmp[7] + Rs232_Rx;

099 7’d84,7‘d85,7’d86:Stop_Bit 《= Stop_Bit + Rs232_Rx;

100 default:;

101 endcase

102 end

103 else ;

根據(jù)串口發(fā)送協(xié)議,一個字節(jié)的數(shù)據(jù)傳輸是以一個波特率周期的低電平作為起始位的,因此,成功接收UART串口數(shù)據(jù)的核心就是準(zhǔn)確檢測起始位。由于外部串口發(fā)送過來的數(shù)據(jù)與接收系統(tǒng)不在同一個時(shí)鐘域,因此不能直接使用該信號的下降沿來作為檢測標(biāo)志,我們需要在fpga中,采用專用的邊沿檢測電路來實(shí)現(xiàn),第25行至37行通過四個移位寄存器,存儲連續(xù)四個時(shí)鐘上升沿時(shí)外部發(fā)送數(shù)據(jù)線的狀態(tài),第39行通過比較前兩個時(shí)鐘時(shí)數(shù)據(jù)線的狀態(tài)與后兩個時(shí)鐘時(shí)數(shù)據(jù)線的狀態(tài),來得到該數(shù)據(jù)線的準(zhǔn)確下降沿,以此保證起始位的準(zhǔn)確檢測。

在簡單的串口接收中,我們通常選取一位數(shù)據(jù)的中間時(shí)刻進(jìn)行采樣,因?yàn)榇藭r(shí)數(shù)據(jù)最穩(wěn)定,但是在工業(yè)環(huán)境中,存在著各種干擾,在干擾存在的情況下,如果采用傳統(tǒng)的中間時(shí)刻采樣一次的方式,采樣結(jié)果就有可能受到干擾而出錯。為了濾除這種干擾,這里采用多次采樣求概率的方式。如下圖,將一位數(shù)據(jù)平均分成9個時(shí)間段,對位于中間的三個時(shí)間段進(jìn)行采樣。然后對三個采樣結(jié)果進(jìn)行統(tǒng)計(jì)判斷,如果某種電平狀態(tài)在三次采樣結(jié)果中占到了兩次及以上,則可以判定此電平狀態(tài)即為正確的數(shù)據(jù)電平。例如4、5、6時(shí)刻采樣結(jié)果分別為1、1、0,那么就取此位解碼結(jié)果為1,否則,若三次采樣結(jié)果為0、1、0,則解碼結(jié)果就為0。

分析一下串口發(fā)送與接收模塊的設(shè)計(jì)代碼

因?yàn)椴蓸右晃恍枰?個時(shí)鐘上升沿,因此,采樣一個完整的數(shù)據(jù)需要10*9,即90個時(shí)鐘上升沿,這里,采樣時(shí)鐘為波特率時(shí)鐘的9倍。產(chǎn)生采樣時(shí)鐘的部分代碼如下所示:

089 /*-------波特率時(shí)鐘生成定時(shí)器--------------*/

090 always@(posedge Clk or negedge Rst_n)

091 if(!Rst_n)

092 Count 《= 10‘d0;

093 else if(BPS_EN == 1’b0)

094 Count 《= 10‘d0;

095 else begin

096 if(Count == BPS_PARA)

097 Count 《= 10’d0;

098 else

099 Count 《= Count + 1‘b1;

100 end

101

102 //=====================================================

103 /*輸出數(shù)據(jù)接收采樣時(shí)鐘*/

104 always @(posedge Clk or negedge Rst_n)

105 if(!Rst_n)

106 Sample_Clk 《= 1’b0;

107 else if(Count== 1)

108 Sample_Clk 《= 1‘b1;

109 else

110 Sample_Clk 《= 1’b0;

這里,BPS_PARA的計(jì)算原理和前面Tx_Bps_Gen模塊中的BPS_PARA的計(jì)算原理一致,不過這里,因?yàn)椴蓸訒r(shí)鐘為波特率時(shí)鐘的9倍,所以,BPS_PARA為Tx_Bps_Gen模塊中的BPS_PARA的1/9。計(jì)算BPS_PARA的相關(guān)代碼如下:

018 parameter system_clk = 50_000_000; /*輸入時(shí)鐘頻率設(shè)定,默認(rèn)50M*/

019

020 /*根據(jù)輸入時(shí)鐘頻率計(jì)算生成各波特率時(shí)分頻計(jì)數(shù)器的計(jì)數(shù)最大值*/

021 localparam bps9600 = system_clk/9600/9 - 1;

022 localparam bps19200 = system_clk/19200/9 - 1;

023 localparam bps38400 = system_clk/38400/9 - 1;

024 localparam bps57600 = system_clk/57600/9 - 1;

025 localparam bps115200 = system_clk/115200/9 - 1;

026 localparam bps230400 = system_clk/230400/9 - 1;

027 localparam bps460800 = system_clk/460800/9 - 1;

028 localparam bps921600 = system_clk/921600/9 - 1;

029

030 reg [31:0]BPS_PARA;/*波特率分頻計(jì)數(shù)器的計(jì)數(shù)最大值*/

031

032 always@(posedge Clk or negedge Rst_n)

033 if(!Rst_n)begin

034 BPS_PARA 《= bps9600; /*復(fù)位時(shí)波特率默認(rèn)為9600bps*/

035 end

036 else begin

037 case(Baud_Set) /*根據(jù)波特率控制信號選擇不同的波特率計(jì)數(shù)器計(jì)數(shù)最大值*/

038 3‘d0: BPS_PARA 《= bps9600;

039 3’d1: BPS_PARA 《= bps19200;

040 3‘d2: BPS_PARA 《= bps38400;

041 3’d3: BPS_PARA 《= bps57600;

042 3‘d4: BPS_PARA 《= bps115200;

043 3’d5: BPS_PARA 《= bps230400;

044 3‘d6: BPS_PARA 《= bps460800;

045 3’d7: BPS_PARA 《= bps921600;

046 default: BPS_PARA 《= bps9600;/*異常情況,恢復(fù)到9600的波特率*/

047 endcase

048 end

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接收模塊
    +關(guān)注

    關(guān)注

    1

    文章

    22

    瀏覽量

    10693
  • 時(shí)鐘信號
    +關(guān)注

    關(guān)注

    4

    文章

    468

    瀏覽量

    29229
  • 分頻計(jì)數(shù)器

    關(guān)注

    0

    文章

    4

    瀏覽量

    7980

原文標(biāo)題:基于ZX-2型FPGA開發(fā)板的串口示波器(二)

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    stm32N657配置USART2,可以發(fā)送,但是為什么無法進(jìn)入接收中斷呢?

    串口2,中斷也配置了,編寫接收回調(diào)函數(shù),無法進(jìn)入,但是可以正常發(fā)送。請問大家能不能幫我看看代碼???找了天沒找到問題。
    發(fā)表于 06-18 07:13

    用芯嶺技術(shù)433接收發(fā)射芯片開發(fā)的串口模塊

    發(fā)送,并將接收到的射頻信號轉(zhuǎn)換回?cái)?shù)據(jù)。433芯片通常具備良好的抗干擾能力和較長的通信距離。芯嶺技術(shù)的XL4456,XL520,XL710都是高性能,低功耗的315/433M無線芯片,XL4456發(fā)射芯片可以搭配XL520接收芯片
    的頭像 發(fā)表于 06-04 11:45 ?199次閱讀
    用芯嶺技術(shù)433<b class='flag-5'>接收</b>發(fā)射芯片開發(fā)的<b class='flag-5'>串口</b><b class='flag-5'>模塊</b>

    【高云GW5AT-LV60 開發(fā)套件試用體驗(yàn)】代碼解讀-串口通訊

    gtkterm,可以通過USB轉(zhuǎn)串口的設(shè)備節(jié)點(diǎn)跟板子通訊,本例是個回顯的例子,接收的數(shù)據(jù)會直接發(fā)送回去,所以鍵盤按什么就能返回什么。
    發(fā)表于 05-26 02:18

    STM32F427串口接收發(fā)送中斷同時(shí)使能,為什么會出現(xiàn)接收中斷丟數(shù)的情況?

    STM32F427芯片,針對UART7開啟串口接收緩存區(qū)非空中斷RXNE和串口傳輸完成中斷TC. 1.單測試收發(fā)都沒有任何問題。 2.將串口與PC機(jī)連接,PC端通過
    發(fā)表于 03-11 07:05

    Labview串口通訊,使用SerialPort

    發(fā)送與接收功能,在循環(huán)里面做兩個事件,個是發(fā)送按鈕事件,用于調(diào)用接口發(fā)送數(shù)據(jù),另外個是
    發(fā)表于 03-08 18:38

    串口阻塞”你真的會用嗎?

    很久才會發(fā)出來,一下子出來很多數(shù)據(jù)”。經(jīng)過幫客戶檢查應(yīng)用程序源碼,發(fā)現(xiàn)應(yīng)用程序在串口阻塞方面沒有做正確的處理,修改后解決。非阻塞打開串口open("/dev/tty
    的頭像 發(fā)表于 02-13 11:42 ?761次閱讀
    “<b class='flag-5'>串口</b>阻塞”你真的會用嗎?

    分析C語言代碼結(jié)構(gòu)的設(shè)計(jì)問題

    項(xiàng)目中遇到的,我拿過來給簡化了一下。 其實(shí)這樣的代碼可能會導(dǎo)致內(nèi)存泄漏,如果第個 malloc 申請成功,第二個 malloc 申請失敗,直接 return -1 退出函數(shù),就會導(dǎo)致前面申請的內(nèi)存沒有釋放,長期運(yùn)行,極有可能導(dǎo)
    的頭像 發(fā)表于 02-11 09:31 ?370次閱讀

    CW32模塊使用 紅外解碼編碼模塊

    格式設(shè)備,如大部分電視機(jī)、機(jī)頂盒、DVD、電風(fēng)扇等電器設(shè)備。 只需要利用到單片機(jī)的串口通信知識,通過串口發(fā)送指定的指令進(jìn)行控制模塊發(fā)射;通過串口
    的頭像 發(fā)表于 01-23 12:56 ?696次閱讀
    CW32<b class='flag-5'>模塊</b>使用 紅外解碼編碼<b class='flag-5'>模塊</b>

    “碰一下”支付背后的4G技術(shù)

    不知道你是否有留意,近期,在線下支付場景中,多了個支付寶“碰一下”支付的設(shè)備,只需要“解鎖手機(jī)—碰一下—確認(rèn)”即可完成支付,對比打開付款碼支付,步驟確實(shí)更加簡潔。
    的頭像 發(fā)表于 01-03 16:27 ?1894次閱讀

    ADC124S021用硬件SPI時(shí),串口發(fā)送數(shù)據(jù)直是0000,為什么?

    用G2553作為控制芯片,用IO口模擬SPI與ADC124S021通信時(shí),再通過串口發(fā)送數(shù)據(jù),沒有問題。但是用硬件SPI時(shí),串口發(fā)送數(shù)據(jù)
    發(fā)表于 12-31 06:17

    使用Python進(jìn)行串口通信的案例

    當(dāng)然!以下是個使用Python進(jìn)行串口通信的簡單示例。這個示例展示了如何配置串口、發(fā)送數(shù)據(jù)以及接收數(shù)據(jù)。我們將使用 pyserial 庫,
    的頭像 發(fā)表于 11-22 09:11 ?1464次閱讀

    串口通信設(shè)備連接方法 串口通信在嵌入式開發(fā)中的應(yīng)用

    硬件連接 串口通信通常涉及兩個設(shè)備:發(fā)送器和接收器。連接這兩個設(shè)備需要以下步驟: 選擇正確的接口 :確保
    的頭像 發(fā)表于 11-22 09:07 ?2717次閱讀

    代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法

    代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法
    的頭像 發(fā)表于 11-15 01:02 ?1451次閱讀
    【<b class='flag-5'>代碼</b>分享】基于樂鑫ESP32的<b class='flag-5'>串口</b>不定長數(shù)據(jù)<b class='flag-5'>接收</b>方法

    socket 發(fā)送接收數(shù)據(jù)方法

    1. Socket 基本概念 在網(wǎng)絡(luò)編程中,socket 是個通信端點(diǎn)。它允許程序發(fā)送接收數(shù)據(jù)。根據(jù)通信協(xié)議的不同,socket 可以分為以下幾種類型: 流式 socket
    的頭像 發(fā)表于 11-12 14:07 ?1908次閱讀

    RS485收發(fā)模塊無法接收數(shù)據(jù)

    RS485收發(fā)模塊 NSI83085只能發(fā)送,不能接收數(shù)據(jù) 用RS485轉(zhuǎn)串口調(diào)試板子發(fā)現(xiàn),板子發(fā)送的字符電腦能夠收到,但是電腦
    發(fā)表于 07-31 18:16