我是用S3C2416做的cpu,系统用WINCE,扩展SJA1000的CAN模块,做驱动时遇到的困难,就是底层读写SJA1000寄存器出的错误,参考的是周立功的书。然后从串口打印观察,每次读出的寄存器值都不对,是最近一次写入的值,又懂得大神,请指导,麻烦的话加QQ指导,等......
void SJA1000_ReadRegister(UINT8 reg, UINT8 *value)
{
//g_lpBaseSJA1000[8] = reg;
//*value = (UINT8)g_lpBaseSJA1000[4];
WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[7], reg);
*value = READ_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[0]);
RETAILMSG(1,(TEXT("read from reg [0x%02x]=[0x%02x]\r\n"),reg,*value));
}
void SJA1000_WriteRegister(UINT8 reg, UINT8 value)
{
//g_lpBaseSJA1000[4] = reg;
//g_lpBaseSJA1000[8] = value;
WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[7], reg);
WRITE_REGISTER_UCHAR((PUCHAR)&g_lpBaseSJA1000[0], value);
RETAILMSG(1,(TEXT("write value to reg [0x%02x]=[0x%02x]\r\n"),reg,value));
}
ARM读写sja1000的问题
2、用Intel或者Moto总线方式,分地址去读写每个SJA1000,接收发送的时候有中断提示的。这样本身就很容易区分开CAN的控制。3、ARM的对各个SJA1000任务的切换可以用ARM的操作系统或者其他的方式切换。和其他的控制一样。
SJA1000发送数据的波形总是只有一个低起始,后面就是高电平,FPGA配置...
采用基于ARM微处理器的单板机系统建立...S3C44B0x 的数据、地址和控制信号线...总线上的设备节点之间直接通过SJA1000...这些缓冲页的一部分作为接收缓冲区,...
求助:单片机及嵌入式行业所具备的知识技能
也可以使用并行,可以按照对ram的读写一样的方法来扩展;反正sja1000也是并行的;串行又可以分成:输入串行扩展;输出串行扩展;嗯要不就定下来,输入使用串行扩展,反正输入的开关量为了抗干扰也要使用时间片,1ms间隔扫描至少3~5次才能判断;输入串行扩展可以使用74HC165;好像74hc166也可以,不记得了;需要2根I\/O;这样13-2...
你好,我先前提问的proteus仿真CAN总线的那个题目,觉得你很厉害啊,老...
1、电路MCU+sja1000+82c250,价格总共不超过20元,建议一次买三套,我第一次买的时候才买2套,不能通信,我还以为是程序问题呢,后来才知道是芯片有问题了 2、程序设计,参考sja1000说明书,还有就是下载别人的程序(虽然不能用),对照别人的程序和说明书,自己该参数,3、找一些高人指导(别人可能...
嵌入式Linux设备驱动开发详解的目录
9.3.2 CAN控制器SJA1000的特征功能 1939.3.3 CAN 控制器SJA1000的Basic CAN模式设置 1949.4 SJA1000扩展CAN总线接口的通信 1969.4.1 通过CAN总线建立通信的步骤 1969.4.2 SJA1000的初始化 1969.4.3 驱动程序的结构设计 1989.4.4 驱动程序init、exit、open、close函数的实现 2009.4.5 驱动程序read、write函数的...
急求基于proteus的can总线通讯系统仿真系统设计的原理图和程序_百度...
1、电路MCU+sja1000+82c250,价格总共不超过20元,建议一次买三套,我第一次买的时候才买2套,不能通信,我还以为是程序问题呢,后来才知道是芯片有问题了 2、程序设计,参考sja1000说明书,还有就是下载别人的程序(虽然不能用),对照别人的程序和说明书,自己该参数,3、找一些高人指导(别人可能...