打印

arm读写sja1000错误

[复制链接]
2161|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuwukong|  楼主 | 2009-5-21 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EP9315 arm,sja1000 can,wince5.0
参考周立功magic arm的读写函数
void SJA1000_ReadRegister(UINT8 reg, UINT8 *value)
{
    //g_lpBaseSJA1000[8] = reg;
    //*value = (UINT8)g_lpBaseSJA1000[4];
    //return (*(volatile UCHAR * const)Register);
    WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[8], reg);
    *value = READ_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[4]);
    #ifdef DEBUG
    RETAILMSG(1,(TEXT("read from[0x%02x]=[0x%02x] "),reg,*value));
    #endif
}

void SJA1000_WriteRegister(UINT8 reg, UINT8 value)
{
    //g_lpBaseSJA1000[4] = reg;
    //g_lpBaseSJA1000[8] = value;
    #ifdef DEBUG
    RETAILMSG(1,(TEXT("write to[0x%02x]=[0x%02x] "),reg,value));
    #endif
    WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[8], reg);
    WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[4], value);
}可以写进sja1000,这个通过写CDR分频系数改变CLKOUT脚的频率,通过示波器得知
读的时候读回来的都是要读数据的地址,好像读得太快了,刚把地址送出,还没等到数据,就读,结果读到地址了,因sja1000地址数据线复用。各位大侠有什么看法。
串口打印信息如下
read from[0x00]=[0x00]
read from[0x01]=[0x01]
read from[0x02]=[0x02]
read from[0x03]=[0x03]
read from[0x04]=[0x04]
read from[0x05]=[0x05]
read from[0x06]=[0x06]
read from[0x07]=[0x07]
read from[0x08]=[0x08]
read from[0x09]=[0x09]

相关帖子

沙发
xuwukong|  楼主 | 2009-5-25 11:36 | 只看该作者

是否时序配置错误

是不是时序配置错了

使用特权

评论回复
板凳
qchwu| | 2009-12-16 09:31 | 只看该作者
请问楼主问题解决了吗?如何解决的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

55

帖子

0

粉丝