阅读:1263回复:5
有关44b0x豪华板上SL811HS的问题?
我在44b0x上,测试SL811HS读些的时候,出现以下问题
能正确读写某个存储器的值,但是连续读取一块存储器的时候中间有些地址总会出错,每次错的地址还不一样。 比如,这样可以正常工作: SL811Write(0x40,0x88); SL811Read(0x40)这样的值还是0x88. 但是,这样写中间的某些存储器就会出错: for(i=0x40; i<0x80; i++) { SL811Write(i,i) } for(i=0x40; i<0x80; i++) { res=SL811Read(i) Uart_Printf(res); } 这样每次得到的结果都不一样。 有没有人遇到过类似的问题,请指点。谢谢 email:hdb198@126.com QQ:64933453 欢迎讨论 |
|
沙发#
发布于:2004-09-17 16:05
难道就没人知道吗?
|
|
板凳#
发布于:2004-09-19 11:20
我试过了,找到问题所在。
你的这段程序一般是在USB中断程序写的,是调用SL811read函数存在问题。你试着不用函数,直接进行地址读写或者 使用EXTERN在外部说明一下SL811read函数,就可以了。 |
|
|
地板#
发布于:2004-09-19 11:48
多谢你的指点,但是我的这段程序不是在中断中写的,我只是想测试
能不能正确读写SL811HS,实际上这段程序直接放在main()函数里面的。SL11Read()就在同一文件中也应该不用extern说明阿。 |
|
地下室#
发布于:2004-09-19 19:49
不好意思,我说错了。
我把你这段程序写在主程序中,而sl811read sl811write在中断函数中定义,未做声明。这样测试现象跟你说得一样。 我用把函数的内容移过来,不使用函数调用,就不存在这个问题了。你可以试试! |
|
|
5楼#
发布于:2004-09-20 12:16
谢谢,我的SL11Read(),SL11Write()就是写在main()那个文件里的,我把这两个函数的内容一致过来,看到的结果也一样。我怀疑是
44B0X的寄存器的问题,你是怎么设置的,尤其是SYSCFG,BankCon4 这两个寄存器? 或者是晶振的问题,你用的是有源的还是无源的。 |
|