1、測試命令不能正常取反(check_exist)。
需要從硬體和軟體兩個方面排查問題。
硬體方面:分析上電預設介面選擇是否正確。例如,使用ch376s的spi介面,硬體電路必須保證wr#,rd#引腳接地,pcs#,a0,rxd,txd引腳懸空或接高電平,其他具體配置方法見ch37xds1手冊通訊介面章節;測量晶振起振情況,不起振嘗試調節電容大小或換晶振;確保v3引腳在電源電壓為5v時通過103電容接地,在3.3v供電時,直接連線到3.3v電源上;rsti引腳是否符合該晶元上電復位的狀態,例如ch376為高電平復位,所以rsti一般需接103電容到vcc,該引腳也可以選擇懸空。
軟體方面:上電後晶元有復位時間,所以一般需要延時50~100ms後操作ch37x。對於串列埠模式操作,波特率是否正確,可用串列埠除錯助手發命令測試(ch375較為特殊,9位資料位,只能用微控制器等控制器傳送測試命令,實際程式設計時也應注意該問題);對於spi通訊介面,ch37x僅支援spi模式0和模式3,命令與資料之間需要保留2us延時,資料與資料之間需要保留1us延時。命令開始前拉低cs,命令相關的資料發/收結束後拉高cs,即cs拉低後的第乙個資料代表的是命令碼;對於並口通訊方式,檢查軟體時序、匯流排位址是否有誤,軟體模擬的並口,注意io方向切換。
2、關於u盤插入檢測不到連線的解決辦法
檢測失敗返回值,如果主機模式已設定,插入u盤會產生中斷狀態0x15,拔出會產生中斷狀態0x16。如果ch376/ch378執行0x30命令,如果u盤已連線產生0x14中斷狀態,如果u盤未連線產生0x82中斷狀態;如果測試命令、模式設定都已通過,檢查設定的模式能否自動檢測連線?(一般設定成已啟用的主機方式,自動產生sof包模式);測試d+、d-訊號線,對於全速、高速裝置,匯流排空閒時d+是高電平,d-是低電平,低速裝置d+ d-電平與之相反;另外,還可以u口加電容或外供電方式以防止某些u盤功耗比較大導致ch37x供電不穩甚至晶元復位的情況。
3、執行diskready()或者diskmount() (0x31)不通過的解決辦法
4、
spi通訊模式下,收發資料一致,常見的有返回0x22等資料
spi通訊模式下,命令的開始需要拉低cs,命令的結束需要拉高cs,如果不清楚命令什麼時候結束,命令是否產生中斷,請詳細看ch37xds1手冊的「命令」章節。命令碼與資料之間的時間間隔需要保證2微秒,資料與資料之間的時間間隔需要保證1微秒。執行像0x30,0x31等這一類有中斷產生的命令,必須要等中斷產生後,才可執行磁碟狀態檢測命令(0x22)。
5、建立檔案成功(0x14),但是在電腦上不可見。
首先確認檔名格式保證是正常的短檔名(長檔名方法必須參考例程):檔名
<=8字元,必須全部大寫,副檔名
<=3字元,也必須全部大寫。
使用ch376能否讀取自己建立的檔案內容或者電腦建立的短檔案ch376能否開啟?發0x01命令讀取晶元版本是否是低版本(小於0x43),如果是低版本,設定檔名之前是否設定一些內部變數?(詳見filesys.c檔案的ch376setfilename函式)。(對於某些參考程式設計指南寫的使用者往往會忽略這一點,所以建議使用者都直接使用已提供的應用層函式filesys.c,免去大量開發時間,並且這個檔案也很成熟,不需要任何修改就可以新增到工程直接使用)。
6、建立檔案成功(0x14),但是在電腦上看到亂碼或者打不開檔案。
重點檢查檔名,是否符合短檔名規範。短檔名的檔名長度不超過8位元組,字尾不超過3位元組,並且由英文大寫字母、數字、下劃線等組合。
7、寫檔案之後,檔案長度只有乙個位元組。
是否執行檔案長度重新整理操作,常用的檔案長度重新整理有兩種,可以執行關閉檔案,同時指定引數為1,或者呼叫ch376bytewrite(buf, 0, 0 )或ch376secwrite(buf,0, 0) (使用前者還是後者取決於使用位元組寫還是扇區寫,不可混用);如果已經執行了檔案長度的重新整理,但是檔案長度仍是1,那麼可能是部分盤的寫入快取導致的檔案重新整理操作沒有執行到,所以可以另外執行額外的操作,例如建立檔案再刪除或者開啟檔案等操作。
8、關於ch376串列埠操作方式的注意事項。(部分使用者會混淆中斷檢測的方式)
ch376串列埠操作時,int引腳也是可選的。第一種情況是使用int引腳作為中斷檢測引腳,也就是中斷是通過int引腳變為低電平來進入的,使int引腳重新恢復高電平的唯一方式是執行get_status(0x22)命令讀取「中斷狀態」。但是,在int引腳變成低電平的同時,微控制器串列埠也會接收到乙個位元組資料(中斷狀態),這個資料一般丟掉(清中斷一般可以丟棄),使用0x22命令重新獲取中斷狀態,同時恢復int引腳電平。
第二種情況是不使用int引腳作為中斷判別標誌的,而是使用上文提到的和int引腳變低的同時串列埠收到的資料作為中斷判別標誌,即只要收到資料就說明中斷到來(376的中斷只會在確定的一些命令發下去之後產生或者拔插操作也會產生,所以中斷產生的時刻是確定的,在那些時刻等待這個串列埠資料就可以了)。讀到的這個資料可以作為中斷狀態直接返回,也可以丟棄,只作為乙個中斷到來的標誌,使用0x22再次讀取中斷狀態值。關於串列埠方式的這兩種檢測使用的詳細**參考ch376evt資料報(uart_hw.c)。
特別說明:例程中xwritech376cmd函式中ri=0就是丟棄串列埠資料的一種方式。
9、列舉usb裝置過程返回0x20,0x24,0x28,0x2c錯誤
以上錯誤統稱為「裝置響應超時,裝置沒有返回」。檢查usb通訊速度是否匹配,檢測方法參考375/6主機**。對於獲取描述符還可以使用get_descr(0x46)命令嘗試。其他解決方法參考第三點「執行diskready()或者diskmount() (0x31)不通過的解決辦法」。
10、模擬usb裝置時列舉出現問題
**中不可以有過多的列印資訊,防止未能及時響應pc而導致pc將其掛起,當然也不可使用硬體單步除錯;看bushound軟體能否抓到一些資料報輔助除錯(可能會抓不到,但是可以把要模擬的裝置放到電腦上抓一些包,仿照收發包流程並模擬裝置的響應);進入中斷後都需要緩衝區解鎖(參考提供的示例**)。
11、測試命令抓包資料(20mhz時鐘,傳送0x65,返回0x9a)
cs訊號需要在傳送0x06命令碼之前拉低,讀取到資料0x9a資料之後拉高。傳送命令碼0x06之後一般需要延時2us傳送資料0x65,之後延時1us讀資料0x9a。
12、把ch376evt**從c51驅動移植到其他mcu。
主要需要修改4個函式的實現形式,分別是xwritech376cmd、xwritech376data、xreadch376data、query376interrupt,可以使用串列埠、並口、spi介面,其他的如延時函式、列印函式等也需要修改。推薦直接使用file_sys.h提供的檔案操作函式,不建議修改file_sys.c檔案。
注:ch37x 參考示例**
scrapy常見問題與解決方案
1.輸出不正確 改 結果不變?其實是因為反覆使用命令 scrapy crawl spider o 1.json 時候,增加的輸出資料不會覆蓋,而是繼續往後面新增。2.request不執行 request url,meta callback self.parse2,dont filter true d...
jeesite學習筆記 常見問題與解決
還需要在角色管理裡面的對應角色的角色授權新增對該選單的檢視許可權 最後重啟伺服器即可。如果在生成 時修改了com.thinkgem.jeesite以外的生成包路徑,則需要在spring mvx.xml檔案中新增這個包路徑,具體新增位置是在context component scan標籤中,按照提示新...
layuiAdmin 常見問題與解決方案
由於單頁面版本的視 件和靜態資源模組都是動態載入的,所以可能存在瀏覽器的本地快取問題,事實上我們也考慮到這個,因此,為了避免改動後的檔案未及時生效,你只需在入口頁面 預設為start index.html 中,找到layui.config,修改其version的值即可。version new dat...