首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教高人mc33389 canlin网关

请教高人mc33389 canlin网关

小弟用mc33389用作can-lin网关,兼作电源供电,写swcr的窗口操作怎么定时阿?有没有更多的资料可以参考以下,如果有代码的话最好了,不胜感激


email:280109609@qq.com

zhwdy81你好

首先谢谢你的帮助,我是通过33993的wake脚来唤醒33389的,现在有个问题是,在33389V2 不供电的情况下,33993的wake脚维持低电平,怎样通过33993的wake脚来触发33389呢?[em13]
能帮忙解释下触发窗口的含义吗?谢谢

新问题

你好,zhwdy81
这是我采用你的mc33389初始化代码,为什么初始化后没有进入normal状态呢?

void Init_33389()
{
unsigned char RD33389(unsigned char cs_addr , unsigned char cs_cmd);
unsigned char WT33389(unsigned char cs_addr , unsigned char cs_cmd);
unsigned char SPI_data1;

SPI_data1=WT33389(CS_SWCR , 0x07) ; //看门狗设置200ms
//唤醒后必读
SPI_data1=RD33389(CS_WUICR , 0x00); //读唤醒输入控制寄存器WUICR
SPI_data1=RD33389(CS_WUISR , 0x00); //读唤醒输入状态寄存器WUISR
SPI_data1=RD33389(CS_RSR , 0x00); //读复位源寄存器RSR
SPI_data1=RD33389(CS_VSSR , 0x00); //读电压补给状态寄存器VSSR
//配置状态寄存器
//唤醒源配置 WUICR
SPI_data1=WT33389(CS_WUICR , 0x02); //唤醒输入L0,L1打开控制寄存器 写WUICR
SPI_data1=WT33389(CS_V3R , 0x04); //force wake up on 写V3R

}[em13]
跟我的理解差不多,可是初始话时 默认值是5ms的狗 ,第一次如果设置成200ms的话,是不是要在100ms以后在写swcr,如果是那样的话,就有一个问题了,初始化的75毫秒时间内是触发不了看门狗的,这时就reset了; 如果窗口值按初试值设的话就应该,第一次在2.5ms后写SWCR设置成200ms,之后出现normal状态,以后按200ms算 ,不知道我这样理解对不对 [em13]
这是33389的初始化代码, 问题在后面描述

void Init_33389()
{
unsigned char RD33389(unsigned char cs_addr );
void WT33389(unsigned char cs_addr , unsigned char cs_cmd);

unsigned char SPI_data1;

/*数据格式转化在函数内部完成*/
/*狗设置200ms*/
WT33389(CS_SWCR , 0x07);

/*醒后必读*/
SPI_data1=RD33389(CS_WUICR );/*唤醒输入控制寄存器*/
SPI_data1=RD33389(CS_WUISR ); /*唤醒输入状态寄存器WUISR*/
SPI_data1=RD33389(CS_RSR ); /*读复位源寄存器RSR*/
SPI_data1=RD33389(CS_VSSR ); /*读电压补给状态寄存器VSSR*/

/*置状态寄存器*/
/*源配置 WUICR*/
WT33389(CS_WUICR , 0x02);/*唤醒输入L0,L1打开控制寄存器 写WUICR*/
WT33389(CS_V3R , 0x04); /* wake up on 写V3R*/

}


主函数目的是想要通过mc33993的wake pin 触发mc33389供电,现在问题是写SWCR寄存器后,mc33389并不进入normal状态,不知道是什么原因

void main(void)
{
/*配置CONFIG ,初始化MCU I/O方向*/
Init_MCU();

/*初始化SPI*/
Init_SPI();

/*初始化33389*/
Init_33389();

/*始化其他模块初始化*/
InitDelay(4000);

/*初始化33993,其中33993的VDD是通过mc33389的V2供电的, 33993 wake pin是接到33389的L0,为了正常初始化mc33993必须保证在mc33389处于normal状态的时候初始 化mc33993,这点怎么实现,如何判断mc33389何时进入normal状态.*/
Init_33993();

EnableInterrupts;
while(1)
{

}

}[em13]
我已经实验出来结果了
normal request也有一个看门狗[em12]
不过还是非常的感谢你的帮助
返回列表