解释为什么mikroC的PIC18F4550 HID示例有效

时间:2012-11-05 10:45:28

标签: usb microcontroller pic hid

mikroC compiler有一个用于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之间?

Link to full source

2 个答案:

答案 0 :(得分:3)

The datasheet实际上说:

  

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

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

答案 1 :(得分:0)

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