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

求助:spi通信! 从设备MC33888,希望高手指点!!

求助:spi通信! 从设备MC33888,希望高手指点!!

 我的单片机spi是8位的,而从设备是16位的,现在要实现两者的通信通过spi,所以要连续发送两个字节,那从设备什么时候将寄存器里的数据读出呢,会不会有可能我只发送一个字节的时候从设备就将16位数据读出呢,也就是读出的数据不是有效的数据呢??


   现在我的问题是我发送数据给从设备,用示波器观看我的clk\mosi\cs的波形都很正确,但是从设备就是不工作,我的从设备用的是MC33888,mos管打不开,不知道怎么回事,有高手指点一下吧!谢谢!!!

试一试如此操作:
1 CLK=0
2 CS发送高到低的跳变并CS=0
3 发送16bit的数据
4 CS置高
spi是发一位收一位啊,clk上升沿发送一位,clk下降沿接收一位
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
楼主,我现在遇到的问题和你一样,我觉得是工作模式的问题,但我将RESET置高了,而且通过将那个WAKE脚直接接地禁止了看门狗,照理这就应该进入正常工作模式了吧,这个工作模式的转换是怎么实现的呢?我现在很头大,请楼主帮下忙,给点建议或者MC33888的使用心得什么的,感激不尽,我邮箱是majialong@yahoo.com.cn
33888的spi工作原理(仅供参考)
1: SI的数据是在clk的下跳沿读入shift register,并且在CS信号上跳沿时,shift register的值打入所需的实际register中(也就是16位si数据中指定的register)
2: SO的信号在clk的上跳沿从shift register中送到so的线上,实际MCU端的si是在clk的下跳沿获得数据,(看手册上的SPI图例)。这也符合第1条中SI的数据获得方式。33888的register数据是在cs的下跳沿从register打入shift register。

不知道这样的描述,你们可以明白吗? 你只需要知道,在spi工作前,CS=1,clk=0,然后按照规定,先cs=0,然后clk打入16个脉冲,同时,si的数据在clk的上跳沿作准备,就可以了。其它工作33888来完成。

如果你的数据不是16位,比如15位或其它,都将被忽略。

所以,如果你不能正确配置33888,请检查SPI规范是否符合上面的描述。
楼上,我的单片机是在上升沿输出,即MC3888的SI的数据在CLK的上升沿做好了准备,也是在spi工作前,CS=1,clk=0,然后按照规定,先cs=0,然后clk打入16个脉冲。但是因为单片机的SPI是8位,所以是8个脉冲,有段延时之后再有下一个8个脉冲,但我的CS确实是在这16个脉冲之间保持为低的,但就是不行。
我的现象是MC33888的RESET位置高后,所有的高路开关都有输出,而不是那个fail-safe模式下的只有HS0,HS2有输出,事实上我已经将FSI接地禁止了看门狗,到底怎么回事呢,楼上大侠给个建议吧。
返回列表