關(guān)于CH55x系列USB的DMA配置問(wèn)題

1、對(duì)于單發(fā)送或者接收的端點(diǎn),端點(diǎn)數(shù)據(jù)長(zhǎng)度為32字節(jié),是否可配置DMA緩存長(zhǎng)度為32字節(jié);

2、手冊(cè)上有這樣一句話:

image.png


“注:接收數(shù)據(jù)的緩沖區(qū)的長(zhǎng)度 >= min(可能接收到的最大數(shù)據(jù)包長(zhǎng)度 + 2 字節(jié),64 字節(jié))”

這個(gè)“2字節(jié)”是個(gè)什么意思?

1、需要指定端點(diǎn)描述符大小為32+2字節(jié)。

2、在USB數(shù)據(jù)包中的有效數(shù)據(jù)后會(huì)有2字節(jié)的CRC。當(dāng)DATA包的數(shù)據(jù)段不滿64字節(jié)時(shí),2字節(jié)的CRC也會(huì)被DMA搬運(yùn)至RAM中,需要在定義緩沖區(qū)的時(shí)候進(jìn)行占位。



就是說(shuō)多出來(lái)的2字節(jié)在分配dma空間時(shí)還是必須分配,但是軟件的其他地方是否可以使用這2字節(jié)的空間呢?還是讓他空著不管?


你好,順便再問(wèn)個(gè)問(wèn)題,請(qǐng)問(wèn)ch55x系列單片機(jī)中所有的中斷優(yōu)先級(jí)可不可以設(shè)置成同級(jí)別的,也就說(shuō)讓某幾個(gè)中斷不嵌套。我看了下手冊(cè)感覺(jué)中斷默認(rèn)都是嵌套的。謝謝!


如果是傳輸長(zhǎng)度不滿64字節(jié),緩沖區(qū)需要2字節(jié)占位的情況下,這兩個(gè)字節(jié)隨時(shí)可能被USB外設(shè)修改(當(dāng)發(fā)生了USB傳輸?shù)臅r(shí)候)。

如果不想產(chǎn)生嵌套,IP寄存器全部設(shè)為0即可。


注:接收數(shù)據(jù)的緩沖區(qū)的長(zhǎng)度 >= min(可能接收到的最大數(shù)據(jù)包長(zhǎng)度 + 2字節(jié),64字節(jié))?

還是這個(gè)問(wèn)題,如果設(shè)備描述符的端點(diǎn)0最大包設(shè)置為64字節(jié)=0x40,最大可能收到的數(shù)據(jù)包為64字節(jié),

這里min(64+2,64)=64,緩沖區(qū)長(zhǎng)度要設(shè)置為64?可能多出來(lái)的兩個(gè)字節(jié)CRC放哪里呢?

看了很多Demo,端點(diǎn)0最大包都設(shè)置為8字節(jié),是否可以設(shè)置為64字節(jié)呢?

或者是否可以這樣理解:最大緩沖區(qū)長(zhǎng)度可以設(shè)置64字節(jié),可接收的最大數(shù)據(jù)包長(zhǎng)度為64-2=62字節(jié)?



1、USB傳輸較長(zhǎng)包時(shí),有效數(shù)據(jù)加上2字節(jié)CRC超過(guò)64字節(jié)長(zhǎng)度的,超出64的部分不會(huì)被DMA搬運(yùn)到RAM中。

所以緩沖區(qū)長(zhǎng)度定義成64,就可以保證任意長(zhǎng)度的數(shù)據(jù)傳輸可靠。

當(dāng)USB傳輸全部是短包的時(shí)候,從節(jié)約ram使用的角度考慮,可以準(zhǔn)確的定義緩沖區(qū)長(zhǎng)度為 最大包長(zhǎng)度+2。

image.png

舉例:當(dāng)設(shè)計(jì)端點(diǎn)0的最大長(zhǎng)度為8字節(jié)(端點(diǎn)0能力是64字節(jié),根據(jù)需要可以改)的時(shí)候,緩沖區(qū)長(zhǎng)度需要配置成8+2=10字節(jié)

????????端點(diǎn)1根據(jù)通訊雙方約定的最大包長(zhǎng)度是32字節(jié)的時(shí)候,長(zhǎng)度32+2=34字節(jié)

????????端點(diǎn)1根據(jù)通訊雙方約定的最大包長(zhǎng)度是63字節(jié)的時(shí)候,63+2=65,65大于最大長(zhǎng)度64,長(zhǎng)度寫成64字節(jié)

????????端點(diǎn)1根據(jù)通訊雙方約定的最大包長(zhǎng)度是64字節(jié)的時(shí)候,長(zhǎng)度直接等于64字節(jié)

2、端點(diǎn)長(zhǎng)度問(wèn)題

image.png

端點(diǎn)0可以配置成64字節(jié)的長(zhǎng)度,緩沖區(qū)定義長(zhǎng)度問(wèn)題同其余端點(diǎn)一致


感謝解釋,這下就非常清楚了。

一句話總結(jié)就是:USB的DMA在搬運(yùn)數(shù)據(jù)時(shí),會(huì)多搬運(yùn)2個(gè)字節(jié)的CRC,但是搬運(yùn)總數(shù)據(jù)最大不超過(guò)64字節(jié)。

ps.

兩個(gè)字節(jié)的CRC對(duì)用戶來(lái)說(shuō)是沒(méi)有用的,感覺(jué)這個(gè)像是USB IP的的一個(gè)known issue.


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频