本文來源電子發燒友社區,作者:jf_25674040, 帖子地址:https://bbs.elecfans.com/jishu_2292606_1_1.html
一、安裝ubuntu22.04 server系統
-
-
將SD卡插入到板卡SD卡卡槽中;
-
ssh 賬號: user 密碼:star5
二、修改dtb文件,并使能uart1
-
獲取linux源代碼,并編譯源代碼linux源代碼
sudo apt update
sudo 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有關的接口sudo cp linux/arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dtb /boot/dtb-5.17.5-visionfive-foobar-29042022
sudo sudo update-grub
UART和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): pass
def 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 False
def 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()
五、執行代碼獲取甲醛值
-
RISC-V
+關注
關注
46文章
2477瀏覽量
48252 -
賽昉科技
+關注
關注
3文章
165瀏覽量
14744
發布評論請先 登錄
共建生態,賦能應用 | 賽昉科技精彩亮相中國RISC-V生態大會

賽昉科技RISC-V家庭云解決方案:NAS存儲性能升級,隱私安全雙保障

首屆RISC-V產業發展大會成功舉辦,賽昉攜手產業伙伴共繪RISC-V新藍圖

賽昉科技亮相ICCAD-Expo 2024,共探RISC-V技術最新發展

賽昉科技發布全新RISC-V處理器內核Dubhe-83
賽昉科技產品亮相RISC-V開源創新中心,雙方達成戰略合作

如何讓RISC-V企業賺錢?賽昉科技展現全場景RISC-V解決方案

賽昉科技RVspace生態社區雙周報(8月刊)

Pine64 發布 Oz64 單板計算機:Arm、RISC-V任你切換

賽昉芯驅動,全球首款!深度數智推出兼容Framework可DIY筆記本電腦的RISC-V主板

Ubuntu現已適配RISC-V單板計算機Milk-V Mars

評論