阅读:1539回复:2
弱问:对sl811的RAM中寄存器部分可以连续读写吗?
就是连续读写sl811的内部ram区的前16个字节可以吗?(0x00到0x0f)
另外我调试时候发现: SL811Write(IntStatus,INT_CLEAR ); //清除中断状态寄存器(0xFF) 。。。 ComSendByte(SL811Read(IntStatus)); //串口发送状态寄存器的值 中间无其他修改IntStatus的语句,之间就是其他的一些调试语句。但是串口接受到的为0x40,不知道为什么,我也没有插入或者拔出U盘的操作(目前就是空板子调试MCU对sl811的读写操作),但是IntStatus的值为什么不是前面写入的0xFF呢?(我的读写函数读写其他的单元正常的,就是说读写函数应该没问题的)请各位有经验的大侠帮助啊! |
|
沙发#
发布于:2005-08-09 16:39
连续读写应该都可以的。
IntStatus不是通用的RAM,未必写入什么再回读就一定还是该数据。就比如象51的SBUF一样,读的时候是接收缓冲数据,写得时候则是发送缓冲数据。811的确有点怪,在IntStatus写入0XFF实际是清除所有中断标志的意思,回读为0X40我记得是芯片复位中断完成的意思。 |
|
板凳#
发布于:2005-08-09 17:20
谢谢templa,对于一些寄存器地址如cSOFcnt(0x0f)读和写实际上是两个寄存器,可能写入后再读回会不一样的,51里面的SBUF也是这种情况吧,读写是两个(根据指令来区分是读还是写),尽管都是叫SBUF,但是物理上是分开的两个寄存器。而sl811里面的IntStatus寄存器是读写都可以的,就是一个寄存器啊!所以感到不解!
另外回读到0x40是芯片复位中断的意思? D7 D6 D5 D4 D3 D2 D1 D0 D+ Device insert/ sof timer reserved reserved USB-B USB-A detect/resume remove 上面为IntStatus寄存器结构位的说明,通过特定的位置1就可以清除相应的中断。所以对于0x40(D6位为1)就感觉是接入了一个全速设备;D5为0,就是说是设备已经准备好了;还产生了sof定时中断和USB-A和USB-B中断。 也不知道具体啥个意思? |
|