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之间?
答案 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内存范围内。 谢谢