請(qǐng)教一個(gè)問(wèn)題,我用CH375(HOST 串口模式)讀取U盤(pán),發(fā)送命令的函數(shù)這樣寫(xiě)對(duì)不對(duì)? void send_cmd(unsigned char cmd) { unsigned short int command; command=cmd; command+=0x100; U2TXBUF=command; delayus(2);//delay 2us } 謝謝!
command+=0x100;是把第9位置1把? 若是,流程是正確的 另,向U2TXBUF寫(xiě)數(shù)據(jù)后,需要等待發(fā)送完成
是的,把第9位置1。謝謝,可是把CH375復(fù)位后(選擇的是串口模式),再初始化CH375;但給CH375發(fā)送GET_IC_VER指令沒(méi)有數(shù)據(jù)回應(yīng)。CH375的TX腳一直為高,發(fā)送CHECK_EXIST指令同樣沒(méi)有回應(yīng)。請(qǐng)問(wèn)這是為什么? 初始化程序如下: void InitCH375(void) {int i; unsigned char c; send_cmd(SET_USB_MODE); send_data(6); for(i=0x640;i>0;i--)//delay 10--20us { c=get_data(); if(c==CMD_RET_SUCCESS) break; } if(i!=0) return (USB_INT_SUCCESS); else return 0xff; } }
測(cè)試主程序如下: int main() {unsigned c; ResetCH375(); //reset CH375 InitCH375(); //init CH375 send_cmd(GET_IC_VER); //send command c=get_data(); // receive data // send_cmd(CHECK_EXIST);// check the CH375 // get_data(); }
波特率是否設(shè)置正確?盡量減少誤差,CH375默認(rèn)的波特率為9600,上電后進(jìn)行50MS延時(shí),375上電自復(fù)位.檢測(cè)25,26是否為低電平和高電平,如果不是,檢查晶振是否起振.
你說(shuō)的這些我都檢查過(guò)了,沒(méi)問(wèn)題,波特率我用的是默認(rèn)的9600,25和26 腳也正常,晶振為12M 正常。延時(shí)是嚴(yán)格按照資料來(lái)的。就是沒(méi)回應(yīng)。 我的測(cè)試程序沒(méi)有錯(cuò)嗎?謝謝!
讀寫(xiě)函數(shù)是否正確? 把三個(gè)讀寫(xiě)函數(shù)貼出來(lái)看看.
可以了,是串口配置有點(diǎn)問(wèn)題?,F(xiàn)在可以了。謝謝
請(qǐng)問(wèn)你的配置除了什麼問(wèn)題啊 我現(xiàn)在也有問(wèn)題 用串口方式?jīng)]有返回狀態(tài)
(1)確認(rèn)硬件連接正確,CH375與單片機(jī)的串口是交叉連接 (2)確認(rèn)串口配置正確:CH375默認(rèn)波特率9600,9位數(shù)據(jù)方式,第9位為1表示命令,為0表示數(shù)據(jù),下載CH375LIB.ZIP,\CH375LIB\MCS51\FILELIB5\EXAM7中有MCS51串口例程
還是有點(diǎn)不明白 我現(xiàn)在使用的三線(xiàn)制串口,串口等待狀態(tài)!單片機(jī)采用的是430f149 我現(xiàn)在的問(wèn)題是向模塊發(fā)送了命令,卻沒(méi)有返回狀態(tài)! 我想是不是我的命令發(fā)的不對(duì)了? 我看資料上面寫(xiě)的如果是三線(xiàn)制串口,那么單片機(jī)通過(guò)串口發(fā)送兩個(gè)同步碼字節(jié)替代STA提供啟動(dòng)信號(hào)。 模塊以在20ms內(nèi)收到兩個(gè)同步碼字節(jié)作為STA下降沿的替代信號(hào)。 一開(kāi)始發(fā)送的是查詢(xún)U盤(pán)是否連接 我是這樣發(fā)的 mSendByte(0x57);//發(fā)送同步碼 /* 產(chǎn)生下降沿通知模塊,說(shuō)明命令碼開(kāi)始發(fā)送,請(qǐng)求開(kāi)始執(zhí)行命令 */ mSendByte(0xAB); Delay_ms( 20 ); //延時(shí)一小段 mSendByte( cmd ); // 寫(xiě)入命令碼 mSendByte( len ); //寫(xiě)入后續(xù)參數(shù)的長(zhǎng)度
您把CH375芯片和U盤(pán)讀寫(xiě)模塊混淆了,現(xiàn)在使用的是模塊,430F149是與模塊上的單片機(jī)通訊,非CH375芯片, 操作方法不對(duì),下載CH375HM.ZIP,里面有例程和操作說(shuō)明。
10樓 我知道我用的是模塊啊 我就是按照那個(gè)里面的說(shuō)明啊 我不知道我的操作方法哪里不對(duì)啊 ,望賜教!不勝感激
向模塊發(fā)送數(shù)據(jù)時(shí),中間是不可以加延時(shí)的,我們的例程把發(fā)送命令的過(guò)程封裝在ExecCommand中,對(duì)比一下例程\CH375HM\PUB\SER_SYNC是怎么做的
哦 好的 謝謝你啊 還有一個(gè)問(wèn)題 我現(xiàn)在用這個(gè)模塊標(biāo)準(zhǔn)版模塊(421S+375)工作在串口三線(xiàn)制方式下,硬件上不接STA線(xiàn)可以嗎,不接的話(huà)好像是需要在發(fā)送命令之前發(fā)送兩字節(jié)的同步信號(hào)的。是嗎?
是的,STA和同步碼的功能是一致的,確保雙方同步通訊
我也是串口的問(wèn)題:現(xiàn)在看到375別的管腳都有我發(fā)送的波形。只是低電平?jīng)]有到底,大概3V左右,是不是芯片壞了呢?25也有那個(gè)波形,26低。