0

mikroCコンパイラには、HID(Human Interface Device)USB通信用のライブラリがあります。提供されているサンプルでは、​​以下のバッファがUSB RAMにあり、ターゲットマイクロコントローラとしてPIC18F4550を使用する必要があることを指定しています。

unsigned char readbuff[64] absolute 0x500;   // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64] absolute 0x540;

しかし、PIC18F4550のデータシートには、USBRAMの範囲は400hから4FFhであると記載されています。

では、バッファが400hから4FFhの間にないように見えるのに、なぜそれらの例が機能するのでしょうか。

完全なソースへのリンク

4

2 に答える 2

3

データシートには実際には次のように書かれています。

バンク4(400hから4FFh)は、特にエンドポイントバッファー制御に使用され、バンク5から7はUSBデータに使用できます。使用されているバッファリングのタイプによっては、バンク4の8バイトを除くすべてがUSBバッファスペースとして使用できる場合もあります。

したがって、引用しているコードは、USBデータに使用されるバッファを定義しているように見えます。これらはバンク4ではなくバンク5にあるため、「エンドポバッファ制御」ではありません。

于 2012-11-05T11:02:57.783 に答える
0

USB HIDモードがアクティブになっている場合、USB RAMメモリの範囲は400h〜4FFhがバッファ記述子に割り当てられます。USBとユーザーデータには500hから7ffhの範囲が割り当てられています。重要なことは、すべての記述子バッファとデータバッファがバンク4〜7のRAMメモリ範囲にあることです。ありがとうございました

于 2016-08-26T15:07:34.197 に答える