《基于“礦板”低成本學(xué)習(xí)FPGA》移植OpenC906第二篇-約束綜合實(shí)現(xiàn)生成bit文件與IO擴(kuò)展板設(shè)計(jì)
這一文我們移植了OpenC906, 后面就需要進(jìn)行OpenC906 RISCV核的調(diào)試,那么就需要一個(gè)RISCV的仿真器, 市面上有各種LINK都可以調(diào)試RISCV核,還有很多基于FTDI芯片設(shè)計(jì)的JTAG仿真器也支持RISCV核。 作為嵌入式開發(fā),我們通常需要一把瑞士軍刀級別的仿真器工具:要支持仿真器(JTAG/SWD接口),USB轉(zhuǎn)串口,很多時(shí)候希望能PC直接讀寫SPI接口的 FLASH,IIC接口的EEPROM,所以除了仿真器和串口,還希望能支持SPI和IIC這兩個(gè)常見的接口。
剛好沁恒就有一款這樣的多功能多合一的接口芯片CH347F可以滿足我們的需求。這里順便提一下沁恒的接口芯片真的很豐富,USB,以太網(wǎng),PCIE等等,并且經(jīng)常迭代更新,所以可以經(jīng)常去官網(wǎng)逛一逛。并且設(shè)計(jì)上來說真的很懂用戶需求,就好比這款CH347F,真的長在嵌入式開發(fā)者的心坎上了,作為嵌入式開發(fā)一直想要的就是它!以后SPI,IIC,UART,JTAG一個(gè)工具搞定了,并且是同時(shí)工作的不需切模式。
所以本文就來分享基于CH347F設(shè)計(jì)一款瑞士軍刀級別的嵌入式開發(fā)仿真器小工具。
相關(guān)資料可從官網(wǎng)獲取
手冊
https://www.wch.cn/downloads/CH347DS1_PDF.html
資料包
https://www.wch.cn/downloads/CH347EVT_ZIP.html
詳細(xì)規(guī)格參考手冊,這里個(gè)人對覺得比較有特點(diǎn)的特征進(jìn)行簡單的總結(jié)
1.USB2.0高速
2.支持兩個(gè)UART,最高9Mbps。
3.支持IIC(最大1MHz)和SPI(最大60MHz)
4.支持JTAG/SWD(30M)
5.外圍電路很簡單只需要晶體和阻容
6.內(nèi)置EEPROM可以配置VID PID等參數(shù)
7.單3.3V供電,IO可支持3.3V、2.5V、1.8V。這個(gè)也很有用因?yàn)楹芏?/span>SOC都是1.8V,無需額外的電平轉(zhuǎn)換了。
拓?fù)淙缦?/span>

個(gè)人覺得最最重要的是上述UART,IIC,SPI,JTAG/SWD是同時(shí)工作的,無需格外的模式切換,真正的多功能多合一!
VIO可以跳線到1.8V或者3.3V
有以下接口:2路AURT,一路IIC,一路SPI(兩個(gè)CS),JTAG/SWD,3個(gè)獨(dú)立IO, UART不復(fù)用modem等相關(guān)引腳一般用不上,這樣UART,IIC,SPI都是獨(dú)立引腳方便使用。



這里為了配合FPGA調(diào)試所以引出了FPGA的IO和仿真器本身沒關(guān)系。

手工焊接后實(shí)物如下


新版本OpenOCD主線已經(jīng)支持CH347, 驅(qū)動代碼位于
src\jtag\drivers\ch347.c
參考文章MCU上玩轉(zhuǎn)Linux系列之二:基于OpenOCD的仿真環(huán)境搭建
編譯新版本OpenOCD即可支持CH347.
和CH347相關(guān)的配置文件ch347.cfg 設(shè)置如下
其中speed最大為30M, CPU相關(guān)的配置按照自己平臺設(shè)置。
adapter driver ch347transport select jtagadapter speed 30000ch347 vid_pid 0x1A86 0x55DEbindto 0.0.0.0set _CHIPNAME riscvjtag newtap $_CHIPNAME cpu -irlen 5gdb_port 3333
測試最大9Mbps,示波器測量波形,收發(fā)回環(huán)測試OK.
分別短接兩路串口的TX RX回環(huán)測試,設(shè)置波特率最大9M,設(shè)置大于9M實(shí)際也會限制為9M。

收發(fā)數(shù)據(jù)OK

示波器查看波特率也正確

需要使用zadig將驅(qū)動改為winusb
選接口4改為winusb的驅(qū)動。 接口0和接口2為UART。

Windows下安裝telnet:
控制面板->程序->程序和功能->啟用或關(guān)閉Windows功能
勾選telnet client

命令行打開OpenOCD
./openocd.exe -f ch347.cfg
打印如下
$ ./openocd.exe -f ch347.cfgOpen On-Chip Debugger 0.12.0+dev-01373-gb9e401616-dirty (2026-01-28-04:56)Licensed under GNU GPL v2For bug reports, readhttp://openocd.org/doc/doxygen/bugs.htmlDEPRECATED! use 'gdb port', not 'gdb_port'Info : Listening on port 6666 for tcl connectionsInfo : Listening on port 4444 for telnet connectionsInfo : CH347 UART+SPI+I2C+JTAG from vendor wch.cn with serial number BC7111ABCD found. (Chip version=1. 1, Firmware=0x41)Info : clock speed 30000 kHzInfo : JTAG tap: riscv.cpu tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0)Info : [riscv.cpu0] datacount=1 progbufsize=16Info : [riscv.cpu0] Examined RISC-V coreInfo : [riscv.cpu0] XLEN=32, misa=0x40901124Disabling watchdog...Disabling watchdog, DoneEnable CPUs...DEPRECATED! use 'read_memory' not 'mem2array'Enable CPUS, DoneInfo : [riscv.cpu0] Examination succeedInfo : [riscv.cpu0] starting gdb server on 3333Info : Listening on port 3333 for gdb connections
Windows下終端中輸入
telnet localhost 4444
連接后提示
Open On-Chip Debugger
>
輸入以下命令測試下dump速度
dump_image dump.bin 0x20000000 409600
Dump速度在100KB/S左右

打開GDB
riscv64-unknown-elf-gdb -f test.elf
連接OpenOCD
target extended-remote 172.16.11.110:3333
Load加載下程序,看到速度在148KB/S左右

示波器查看下TCK的頻率為30M和配置文件是對應(yīng)的


CH347F多功能合一同時(shí)工作無需切模式,兩路最大9Mbps的串口,再也不用擔(dān)心USB轉(zhuǎn)串口線不夠,速度不夠了。 同時(shí)還支持SPI,IIC,PC上直接讀寫FLASH,EEPROM各種SPI,IIC接口的外設(shè)簡直不要太方便。 CH347F應(yīng)用外圍電路很簡單,所以快來基于CH347F打造自己的瑞士軍刀級別的仿真器器調(diào)試工具吧,自己打樣,手工焊接下,怎么得也得屯它十幾個(gè),再也不怕找不到USB轉(zhuǎn)串口線,找不到仿真器了。