Board logo

标题: 求助:spi通信! 从设备MC33888,希望高手指点!! [打印本页]

作者: guoguoer    时间: 2006-8-7 14:15     标题: 求助:spi通信! 从设备MC33888,希望高手指点!!

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


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


作者: luckydog    时间: 2006-8-7 15:25

试一试如此操作:
1 CLK=0
2 CS发送高到低的跳变并CS=0
3 发送16bit的数据
4 CS置高
作者: zhwdy81    时间: 2006-8-12 13:20

spi是发一位收一位啊,clk上升沿发送一位,clk下降沿接收一位
作者: majialong@yahoo    时间: 2006-10-16 17:17

楼主,我现在遇到的问题和你一样,我觉得是工作模式的问题,但我将RESET置高了,而且通过将那个WAKE脚直接接地禁止了看门狗,照理这就应该进入正常工作模式了吧,这个工作模式的转换是怎么实现的呢?我现在很头大,请楼主帮下忙,给点建议或者MC33888的使用心得什么的,感激不尽,我邮箱是majialong@yahoo.com.cn
作者: luckydog    时间: 2006-10-18 11:01

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规范是否符合上面的描述。
作者: majialong@yahoo    时间: 2006-10-19 10:33

楼上,我的单片机是在上升沿输出,即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接地禁止了看门狗,到底怎么回事呢,楼上大侠给个建议吧。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0