您好,請使用如下代碼更新原有提示報錯部分,然后重新編譯。
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
? ? ? ? if (tty_port_initialized(&ch9344->ttyport[i].port))
#else
? ? ? ? if (test_bit(ASYNCB_INITIALIZED, &ch9344->ttyport[i].port.flags))
#endif
您好,請使用如下代碼更新原有提示報錯部分,然后重新編譯。
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
? ? ? ? if (tty_port_initialized(&ch9344->ttyport[i].port))
#else
? ? ? ? if (test_bit(ASYNCB_INITIALIZED, &ch9344->ttyport[i].port.flags))
#endif
話說那個i是不是應該是0啊,寫i會提示未聲明...然后0的話就可以正常make,然后install之后ll /dev/ttyCH*就可以看到四路串口了。
完整code如下所示,使用中若有其他問題,隨時溝通。
static int ch9344_reset_resume(struct usb_interface *intf)
{
? ? struct ch9344 *ch9344 = usb_get_intfdata(intf);
? ? int i;
? ? for (i = 0; i < ch9344->num_ports; i++) {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
? ? ? ? if (tty_port_initialized(&ch9344->ttyport[i].port))
#else
? ? ? ? if (test_bit(ASYNCB_INITIALIZED, &ch9344->ttyport[i].port.flags))
#endif
? ? ? ? ? ? tty_port_tty_hangup(&ch9344->ttyport[i].port, false);
? ? }
? ? return ch9344_resume(intf);
}
想請問ch9344_resume這個函數(shù)的完整代碼是什么?因為它里面也有ASYNCB_INITIALIZED這個變量的使用,而且需不需要在它外面也加一層for循環(huán)?
我把完整的code發(fā)給你郵件發(fā)送過去,有疑問可隨時溝通,請查收私信地址。
在/dev下沒有找到ttyWCHUSB0等設備,打印信息如下:
不知道哪里的問題?
您好,加載驅動后找不到設備,通常是因為主機無法正常枚舉到CH9344,設備插入后可以通過lsusb或者dmesg來確認硬件識別情況,若硬件工作不正常,可參考如下鏈接查找原因:http://www.findthetime.net/bbs/thread-70783-1.html?
您好,加載驅動后找不到設備,通常是因為主機無法正常枚舉到CH9344,設備插入后可以通過lsusb或者dmesg來確認硬件識別情況,若硬件工作不正常,可參考如下鏈接查找原因:http://www.findthetime.net/bbs/thread-70783-1.html?
我測試了一下引腳
2,37,33: 3.3V,
18: 2.71V,
3: 1.21V,
48: 4.74V,
35: 1.2V
晶振的頻率:30.12M。 這些是不是說明硬件沒有問題?
CH9344L是直接焊在PCB板上,不需要拔插,linux系統(tǒng)是4.15。dmesg
dmesg命令在上圖已經有顯示。只是找到驅動,并沒有找到設備。這是為什么?
您好,正常情況下PIN2=PIN27=PIN33=PIN18=PIN48為電源輸入端都應為3.3V,PIN3=PIN35為內核電源IO引腳,電平為1.2V左右。根據您的測試情況,建議結合如下注意事項進行排查,其對應電阻電容的標稱值應與參考值一致:
能降速為全速設備么,高速設備板子的usb hub不識別啊.?
您好,CH9344支持USB?2.0?高速/全速接口?自動切換,正常不影響識別和使用。
請問集成到linux系統(tǒng)中,收到數(shù)據分行,請問能不能一行輸出
您好,如溝通,如上您使用的是CH342芯片。在串口接收的時候第一個字節(jié)會被拆分,可以通過應用代碼做下處理。也即設置下串口的VTIME和VMIN。詳細用法可參考鏈接:
兩者結合使用分為下面4種情況:
VMIN = 0 和 VTIME = 0 :在這種情況下,read 調用總是立刻返回。如果有等待處理的字符,read 就會立刻返回;如果沒有字符等待處理,read 調用返回0,并且不讀取任何字符;
VMIN = 0 和 VTIME > 0 :在這種情況下,只要有字符可以處理或者是經過 VTIME 個十分之一秒的時間間隔,read 調用就返回。如果因為超時而未讀到任何字符,read 返回0,否則 read 返回讀取的字符數(shù)目。
VMIN > 0 和 VTIME = 0 :在這種情況下,read 調用將一直等待,直到有 MIN 個字符可以讀取時才返回,返回值是讀取的字符數(shù)量。到達文件尾時返回0。
VMIN > 0 和 VTIME > 0 :在這種情況下,當 read 被調用時,它會等待接收一個字符。在接收到第一個字符及后續(xù)的每個字符后,一個字符間隔定時器被啟動(如果定時器已經運行,則重啟它)。當有 MIN 個字符可讀或兩個字符之間的時間間隔超過 TIME 個十分之一秒時,read 調用返回。這個功能可用于區(qū)分是單獨按下了 Escape 鍵還是按下一個 Escape 鍵開始的功能組合鍵。但要注意的是,網絡通信或處理器的高負載將使得類似這樣的定時器失去作用。
有問題可隨時保持溝通。
故障: CH9344 熱拔時,導致Linux系統(tǒng)死機。
CH9344 USB驅動不支持熱插拔?是否有想關補丁?
?