本文來源電子發(fā)燒友社區(qū),作者:jf_25674040, 帖子地址:https://bbs.elecfans.com/jishu_2292606_1_1.html
一、安裝ubuntu22.04 server系統(tǒng)
-

-
將SD卡插入到板卡SD卡卡槽中;
-
ssh 賬號(hào): user 密碼:star5
二、修改dtb文件,并使能uart1
-
獲取linux源代碼,并編譯源代碼linux源代碼
sudo apt updatesudo apt upgrade sudo apt install gcc-riscv64-linux-gnu git clone https://github.com/starfive-tech/linux.git cd linux make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv visionfive_defconfig make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv -
修改
/linux/arch/riscv/boot/dts/starfive/jh7100-common.dtsi中與uart有關(guān)的接口


sudo cp linux/arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dtb /boot/dtb-5.17.5-visionfive-foobar-29042022sudo sudo update-grubUART和DEV映射

三、硬件連接

四、軟件代碼
- 串口類python代碼
import serial
import serial.tools.list_ports class MySerial(object): def init(self): self.ser = None
def get_port_list(self): port_list = list(serial.tools.list_ports.comports()) return port_list def open_serial_port(self, port, baud): try: self.ser = serial.Serial(port, baud, timeout=0.3, interCharTimeout=0.05) except Exception as e: self.ser = None raise Exception(e) def close_serial_port(self): if self.ser == None: raise Exception("no selected serial") try: self.ser.close() self.ser = None except Exception as e: raise Exception(e
-
工具類代碼
class MyTools(object):def init(self): passdef bytes_to_strs(self, bytes_value): arry = ''.join(['%02x '% b for b in bytes_value]) return (arry.upper()) -
甲醛類代碼:
class ze08_ch20(object):def init(self) -> None: self.tools = MyTools() self.serial = MySerial() self.serial.open_serial_port('/dev/ttyS2', 9600) ''' self.recv_thread_ = threading.Thread(target=self.recv_thread) self.recv_thread_.start() ''' self.recv_thread()def calc_checksum(self, bytes_value): checksum = 0 for byte_ in bytes_value: checksum += byte_ checksum = checksum % (0xff + 1) if checksum == 0xff: return True return Falsedef recv_thread(self): recv_buffer = bytes() #print("hello world") while True: try: recv_buffer += self.serial.read() except Exception as e: print(str(e)) if len(recv_buffer) < 9: time.sleep(0.01) #print(len(recv_buffer)) continue else: if recv_buffer[0] != 0xff: recv_buffer = recv_buffer[1:] else: if len(recv_buffer) >= 9: #print(len(recv_buffer)) phase_buffer = recv_buffer[:9] recv_buffer = recv_buffer[9:] print(self.tools.bytes_to_strs(phase_buffer)) if self.calc_checksum(phase_buffer) == True: int_formaldehyde = int.from_bytes(phase_buffer[4:6], byteorder='big') #print(int_formaldehyde) float_formaldehyde = int_formaldehyde /1000.0 *1.25 print(float_formaldehyde) time.sleep(0.001) -
main代碼
if __name__=="__main__":my_statistics = ze08_ch20()五、執(zhí)行代碼獲取甲醛值

-
RISC-V
+關(guān)注
關(guān)注
48文章
2886瀏覽量
53026 -
賽昉科技
+關(guān)注
關(guān)注
3文章
181瀏覽量
15552
發(fā)布評(píng)論請(qǐng)先 登錄
賽昉科技2025:引領(lǐng)RISC-V駛?cè)?b class='flag-5'>數(shù)據(jù)中心深水區(qū)
RISC-V實(shí)現(xiàn)數(shù)據(jù)中心應(yīng)用突破,賽昉科技BMC芯片重磅亮相
2025 RISC-V產(chǎn)業(yè)發(fā)展大會(huì) | 賽昉科技全景展示規(guī)模化商用成果
賽昉科技重磅發(fā)布新產(chǎn)品,RISC-V實(shí)現(xiàn)數(shù)據(jù)中心規(guī)模化商用突破
【作品合集】賽昉科技VisionFive 2單板計(jì)算機(jī)開發(fā)板測評(píng)
5?款?RISC-V?單板計(jì)算機(jī)測試:性能、基準(zhǔn)測試、特性及見解
賽昉科技入駐RuyiSDK開發(fā)者社區(qū),雙平臺(tái)協(xié)同推進(jìn)RISC-V生態(tài)
賽昉科技徐滔:以精準(zhǔn)場景牽引,RISC-V搶灘數(shù)據(jù)中心百萬顆市場
賽昉科技聯(lián)合合見工軟實(shí)現(xiàn)國產(chǎn)一致性NoC IP與RISC-V核在大規(guī)模網(wǎng)絡(luò)中的適配
【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】環(huán)境搭建與點(diǎn)燈實(shí)驗(yàn)
“核心技術(shù)突破+關(guān)鍵應(yīng)用支撐”,賽昉加速RISC-V生態(tài)突圍
【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】VisionFive 2一個(gè)霸氣的游戲機(jī)
【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】RISC-V架構(gòu)卡片計(jì)算機(jī)初體驗(yàn)
權(quán)威評(píng)測:Orange Pi RV2等5?款?RISC-V?單板計(jì)算機(jī)測試-性能、基準(zhǔn)測試、功能和見解
【賽昉科技昉·星光RISC-V單板計(jì)算機(jī)試用體驗(yàn)】Ubuntu Server 22.04 UART讀取ZE08-CH2O 甲醛數(shù)據(jù)
評(píng)論