查看: 3038|回复: 1

MC9S08LL64的SPI通信问题

[复制链接]

该用户从未签到

2

主题

10

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2013-7-30 22:28:28 | 显示全部楼层 |阅读模式
我用的单片机是MC9S08LL64,要做一个热量表,另外一块芯片是TDC-GP22. 但是在测试两者的SPI通信时,发现单片机发送的信号可以用示波器查看到,而发送读数据的信号后却没有信号返回,也没有返回任何数据。我怀疑是我SPI的设置或编程出现问题,请各位高手帮忙解答。部分程序和资料如下:
首先是TDC-GP22的SPI时序图,这是四线制的SPI
TDC-GP22的SPI时序图.jpg
接下来是测试两块芯片通信的spi程序
#include  /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "MC9S08LL64.h"
#define SSN PTBD_PTBD7
unsigned char i;
void main(void) {
    DisableInterrupts;   /*关中断*/
    SOPT1_COPE=0;        /*关看门狗*/
    SOPT2_SPIPS=1;   /*选择PTB口的SPI*/
    PTBDD_PTBDD7=1;
    SSN=1;
    SPIC1=0x54;      /*使能SPI,设置为主器件,从最高位传输*/ 
//    SPIC2=0x09;
    SPIBR=0x34;      /*预分频因子4,波特率分频因子32*/
    GP22(0x50);       /*对GP22上电*/
    GP22(0x70);      /*对GP22初始化*/
    SSN=0;
    while(SPIS_SPTEF==0);
    SPID=0xB5;                  /*发送指令读取GP22寄存器1的高8位*/
    SSN=1;
    SSN=0;
    while(SPIS_SPRF==0);
    i=SPID;                    /*读取这个数据*/
    SSN=1;

 for (;;) {
  __RESET_WATCHDOG(); /* feeds the dog */
 } /* loop forever */
 /* please make sure that you never leave main */
}
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
3
最后登录
2018-11-28
发表于 2018-11-28 15:48:23 | 显示全部楼层
楼主大大,你好。你的问题解决了没,我碰到了一样的问题,单片机发送的信号可以查看到,接收到的数据一直是0。可以分享下吗。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-3 03:17 , Processed in 0.081772 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表