0

mikroC 编译器有一个用于 HID(人机接口设备)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 的数据表显示 USB RAM 的范围从 400h 到 4FFh。

那么,当他们的缓冲区似乎不在 400h 到 4FFh 之间时,为什么他们的示例有效?

链接到完整的源代码

4

2 回答 2

3

数据表实际上说:

Bank 4(400h 到 4FFh)专门用于端点缓冲区控制,而 Bank 5 到 7 可用于 USB 数据。根据所使用的缓冲类型,Bank 4 的 8 个字节以外的所有字节也可用作 USB 缓冲空间。

因此,您引用的代码似乎是定义用于 USB 数据的缓冲区,而不是“端点缓冲区控制”,因为它们位于第 5 组而不是第 4 组。

于 2012-11-05T11:02:57.783 回答
0

当 USB HID 模式被激活时,从 400h 到 4FFh 的 USB RAM 存储器被分配给缓冲区描述符。为 USB 和用户数据分配了 500h 和 7ffh 之间的范围。重要的是所有描述符缓冲区和数据缓冲区都将在 bank 4-7 的 ram 内存范围内。谢谢

于 2016-08-26T15:07:34.197 回答