文章
-
MODBUS通訊之?dāng)?shù)據(jù)幀格式解讀2024-01-20 08:00
一.背景Modbus協(xié)議是一項(xiàng)應(yīng)用層報(bào)文傳輸協(xié)議,包括ASCII、RTU、TCP三種報(bào)文類型。標(biāo)準(zhǔn)的Modbus協(xié)議物理層接口有RS232、RS422、RS485和以太網(wǎng)接口,采用master/slave方式通信。本文主要介紹的MODBUS-RTU。二.MODBUS數(shù)據(jù)幀組成首先我們要知道一幀正常的MODBUS數(shù)據(jù)幀包含的內(nèi)容有:地址域+功能碼+數(shù)據(jù)+差錯(cuò)校 -
物聯(lián)網(wǎng)LWIP之socket編程2024-01-18 08:00
一,基礎(chǔ)概念在我看來(lái)Socket就相當(dāng)于API,就是函數(shù)接口,我們使用Socket就可以在不清楚底層原理的基礎(chǔ)上進(jìn)行通信,即Socket會(huì)幫助我們處理好網(wǎng)絡(luò)的Ip地址等。下圖就清晰地展示了Socket的位置,作為用戶層與其他層的交互媒介。LWIP實(shí)現(xiàn)Socket需要操作系統(tǒng)的幫助,如下圖所示。二,Socket編程的基礎(chǔ)知識(shí)1.大端模式,小端模式(1)大端模式 -
芯片GD32與以太網(wǎng)芯片的坑2024-01-16 08:00
參考例程是基于GD32F450的,在移植過(guò)程中遇到一些容易忽略的地方,導(dǎo)致程序卡在gd32fxx_enet.c中enet_phy_config的位置。將GD32F450上的代碼全部移植到GD32F470平臺(tái)后,一直卡在卡在gd32fxx_enet.c中enet_phy_config,經(jīng)過(guò)排查發(fā)現(xiàn)GD32的官方庫(kù)文件也需要修改,分別為gd32f4 -
傳輸距離達(dá)到1500米的485電路2024-01-12 08:00
實(shí)測(cè)該電路可以達(dá)到這個(gè)要求,當(dāng)降低波特率時(shí),通訊距離還可繼續(xù)延長(zhǎng),達(dá)到1800-2000米,無(wú)需接中繼。圖上是標(biāo)準(zhǔn)的485通信電路,但是該電路的通訊距離往往達(dá)不到485的理論值。所以需要采用非常規(guī)阻值,解決信號(hào)反射的問(wèn)題。重點(diǎn)來(lái)了,它是能實(shí)際解決你的通信速率和距離問(wèn)題的,一定要認(rèn)真看,使用屏蔽雙絞線可以使用以下阻值,如果是其他線材,則需要調(diào)整匹配電阻的阻值。 -
結(jié)構(gòu)體與指針的關(guān)系2024-01-11 08:00
在C語(yǔ)言中,結(jié)構(gòu)體(Struct)是一種用戶自定義的數(shù)據(jù)類型,它允許您將不同類型的數(shù)據(jù)項(xiàng)組合在一起,以便形成一個(gè)更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體可以包含多個(gè)成員變量,每個(gè)成員變量可以是不同的數(shù)據(jù)類型。而結(jié)構(gòu)體指針則是指向結(jié)構(gòu)體類型的指針,用于操作和訪問(wèn)結(jié)構(gòu)體的成員。下面我們將分別詳細(xì)解釋結(jié)構(gòu)體和結(jié)構(gòu)體指針,并提供相應(yīng)的示例代碼。1.結(jié)構(gòu)體:結(jié)構(gòu)體是一種自定義數(shù)據(jù)類型 -
琢磨了一天的CAN協(xié)議2024-01-10 08:00
最新公司需要利用J1939的CAN協(xié)議進(jìn)行數(shù)據(jù)通信,琢磨了一天,才明白,現(xiàn)在整理成筆記,內(nèi)容如下:1.數(shù)據(jù)幀格式數(shù)據(jù)幀格式應(yīng)遵循CAN29位標(biāo)識(shí)符的擴(kuò)展幀格式,CAN數(shù)據(jù)幀由很多域組成(仲裁域+控制域+數(shù)據(jù)域+CRC域)。2.協(xié)議數(shù)據(jù)單元(PDU)數(shù)據(jù)幀是通過(guò)PDU進(jìn)行組織的。PDU由數(shù)據(jù)幀中的29位標(biāo)識(shí)符(ID號(hào))和數(shù)據(jù)場(chǎng)組成。ID又劃分為6個(gè)部分:優(yōu)先級(jí) -
什么是Modbus協(xié)議?2024-01-09 08:00
Modbus協(xié)議是一種在工業(yè)自動(dòng)化領(lǐng)域廣泛應(yīng)用的通信協(xié)議,它允許不同設(shè)備之間進(jìn)行可靠的數(shù)據(jù)交換和控制。該協(xié)議最初由Modicon公司于1979年創(chuàng)建,旨在提供一種簡(jiǎn)單而有效的方法,使PLC(可編程邏輯控制器)和其他自動(dòng)化設(shè)備能夠相互通信。一,設(shè)計(jì)架構(gòu)和通信模式Modbus協(xié)議采用主從架構(gòu),其中一個(gè)設(shè)備充當(dāng)主站(Master),而其他設(shè)備則充當(dāng)從站(Slave -
GD32F1硬件開發(fā)指南之復(fù)位電路2024-01-07 08:00
GD32F10x系列復(fù)位控制包括三種復(fù)位:電源復(fù)位、系統(tǒng)復(fù)位和備份域復(fù)位。電源復(fù)位為冷復(fù)位,電源啟動(dòng)時(shí)復(fù)位除了備份域的所有系統(tǒng)。電源和系統(tǒng)復(fù)位的過(guò)程中,NRST會(huì)維持一個(gè)低電平,直至復(fù)位結(jié)束。MCU無(wú)法執(zhí)行起來(lái)時(shí),可以通過(guò)示波器監(jiān)測(cè)NRST管腳波形來(lái)判斷芯片是否有一直發(fā)生復(fù)位事件。芯片內(nèi)部集成POR/PDR(上電/掉電復(fù)位)電路,用于檢測(cè)電源并在電壓低于閾值 -
個(gè)人對(duì)STM32 SysTick的總結(jié)(寄存器操作)2024-01-06 08:00
一、概述:SysTick是一個(gè)簡(jiǎn)單的遞減24位計(jì)數(shù)器。如果你不需要再應(yīng)用程序中嵌入操作系統(tǒng),SysTick可以作為簡(jiǎn)單的延時(shí)和產(chǎn)生周期性的中斷。狀態(tài)控制寄存器的第0位可以使能計(jì)數(shù)器,當(dāng)前值寄存器隨著時(shí)鐘一直遞減,當(dāng)他減到0的時(shí)候,重裝載寄存器就會(huì)重新裝載這只的值,計(jì)數(shù)器繼續(xù)從這個(gè)值遞減。二、相關(guān)寄存器:2.1SysTick->CTRL狀態(tài)和控制寄存器位16: -
解決printf無(wú)法打印輸出的問(wèn)題2024-01-04 08:00
FreeRTOS中直接使用newlib庫(kù)是有問(wèn)題的,相信使用過(guò)freertos進(jìn)行printf都能發(fā)現(xiàn)這個(gè)問(wèn)題,這個(gè)問(wèn)題網(wǎng)上有兩種方法:1、使用printf.stdarg.c,問(wèn)題在于,這個(gè)庫(kù)沒有包含float型的輸出!你沒辦法printf出浮點(diǎn)數(shù)。2、使用優(yōu)化過(guò)的printf,這個(gè)能輸出float型,但是在中斷中如果使用float輸出,就會(huì)莫名其妙的整個(gè)程