標(biāo)題: STC8H單片機(jī)USB端點(diǎn)2發(fā)送程序問(wèn)題 [打印本頁(yè)]

作者: 炮姐我老婆    時(shí)間: 2022-5-9 23:08
標(biāo)題: STC8H單片機(jī)USB端點(diǎn)2發(fā)送程序問(wèn)題
最近在搞STC8H8K64U的USB功能,由官網(wǎng)下的STC8H實(shí)驗(yàn)箱程序中的“41-USB鍵盤(pán)設(shè)備通過(guò)P0口矩陣按鍵模擬小鍵盤(pán)功能”修改,官網(wǎng)案例中只有一個(gè)鍵盤(pán)的功能,只支持端點(diǎn)1上傳,但想做一個(gè)復(fù)合鍵鼠,就要用到端點(diǎn)2上傳數(shù)據(jù)
原官方案例的端點(diǎn)1數(shù)據(jù)上傳程序?yàn)椋?br />                         WriteReg(INDEX, 1);
                        for(i=0;i<8;i++)
                        {
                                WriteReg(FIFO1, HidInput[ i]);
                        }
                        WriteReg(INCSR1, INIPRDY);
改為端點(diǎn)2上傳數(shù)據(jù):
                        WriteReg(INDEX, 2);
                        for(i=0;i<8;i++)
                        {
                                WriteReg(FIFO2, HidInput[ i]);
                        }
                        WriteReg(INCSR1, INIPRDY);

理論上描述符雖然支持1個(gè)端點(diǎn),但不影響我單片機(jī)強(qiáng)制發(fā)端點(diǎn)2,但改成端點(diǎn)2上傳數(shù)據(jù)的程序就完全沒(méi)動(dòng)靜了,中斷不進(jìn),總線分析儀也抓不到東西,看了好久手冊(cè)實(shí)在找不出原因,所以才來(lái)請(qǐng)教各位大神,希望大神們幫我解
工程文件放在附件里面

41-USB鍵盤(pán)設(shè)備通過(guò)P0口矩陣按鍵模擬小鍵盤(pán)功能.zip

87.24 KB, 下載次數(shù): 9


作者: yzwzfyz    時(shí)間: 2022-5-10 08:56
先弄清楚:
WriteReg、INDEX、FIFO2、 HidInput[ i]、INCSR1、INIPRDY。
是什么意思,它們對(duì)應(yīng)的內(nèi)存在哪里?

作者: 炮姐我老婆    時(shí)間: 2022-5-10 09:38
yzwzfyz 發(fā)表于 2022-5-10 08:56
先弄清楚:
WriteReg、INDEX、FIFO2、 HidInput[ i]、INCSR1、INIPRDY。
是什么意思,它們對(duì)應(yīng)的內(nèi)存在 ...

這個(gè)大概清楚,WriteReg,這個(gè)要輸入兩個(gè)參數(shù),一個(gè)是想要間接訪問(wèn)的寄存器地址,第二個(gè)是想要寫(xiě)入的數(shù)據(jù);FIFO1和FIFO2是USB端號(hào)索引寄存器,往INCSR1寫(xiě)INIPRDY是發(fā)送數(shù)據(jù),所以整體來(lái)看是先往INDEX里面寫(xiě)入2,選擇端點(diǎn)2,然后循環(huán)8個(gè)往FIFO2填入數(shù)據(jù),然后設(shè)置發(fā)送,但我不太清楚為什么改成端點(diǎn)2 之后發(fā)不出去
作者: tian1234    時(shí)間: 2022-5-10 14:22
判斷條件是和FIFO1時(shí)不一樣嗎
作者: yzwzfyz    時(shí)間: 2022-5-10 16:18
CPU中有幾個(gè)USB。
每個(gè)USE占用的內(nèi)存緩沖有多少?對(duì)應(yīng)的物理地址在何處?
作者: 炮姐我老婆    時(shí)間: 2022-5-10 18:03
yzwzfyz 發(fā)表于 2022-5-10 16:18
CPU中有幾個(gè)USB。
每個(gè)USE占用的內(nèi)存緩沖有多少?對(duì)應(yīng)的物理地址在何處?

一共6個(gè)端點(diǎn),這個(gè)和物理地址關(guān)系不大,我只需要操作間接操作寄存器就能寫(xiě)進(jìn)去,緩存是0-3收發(fā)in/out是64,4-5的in/out是128/256,但是,和這些都沒(méi)關(guān)系,因?yàn)橛瞄g接操作寄存器就能操作,我都笑死了,我改成兩個(gè)端點(diǎn)的描述,所有有關(guān)端點(diǎn)1的操作復(fù)制一次,居然就能發(fā)出去了,還是感謝大哥回帖了^v^已經(jīng)完美模擬多點(diǎn)觸控了
作者: lmn2005    時(shí)間: 2023-1-14 13:51
還是看不懂,感覺(jué)這USB功能好難玩的。
作者: coody_sz    時(shí)間: 2023-1-14 21:18
STC官方有鼠標(biāo)鍵盤(pán)復(fù)合的例子的。
作者: lmn2005    時(shí)間: 2023-1-19 10:08
炮姐我老婆 發(fā)表于 2022-5-10 18:03
一共6個(gè)端點(diǎn),這個(gè)和物理地址關(guān)系不大,我只需要操作間接操作寄存器就能寫(xiě)進(jìn)去,緩存是0-3收發(fā)in/out是64 ...

請(qǐng)問(wèn)樓主是怎樣實(shí)現(xiàn)的,我怎么老是操作不成功




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1