查看: 4071|回复: 3

[S12] MC9S12XEP系列单片机spi通讯问题(已解决)

[复制链接]

该用户从未签到

8

主题

20

帖子

0

注册会员

Rank: 2

积分
82
最后登录
1970-1-1
发表于 2014-6-30 15:10:03 | 显示全部楼层 |阅读模式
 请做过飞思卡尔公司的MC9S12XE系列的spi通讯的人帮帮忙,您的回复会给我很大的帮助,在此感谢您的阅读和热心帮助!
我用的芯片是MC9S12XEP100,目前在测试spi通讯。
现在有几个问题,
1.Spi的初始化配置中,当spi设置为主模式时,SPICR1中的SSOE位如何设置?
SPICR2中的MODEFENBIDIROESPC0又该如何设置?
如下代码是我把SPI设置为主模式,实现SPIEEPROM之间的通讯
/*************************************************************/
void inti_SPI(void)
{
  SPI0CR1 = 0b01010000;   //使能SPI,禁止中断,时钟高有效,相位为0
  SPI0CR2 = 0x00;         //SS管脚为普通I/O,双向模式;
  SPI0BR = 0x70;          //设置SPI时钟频率为2MHz;
 }
*************************************************************/
/*                       SPI发送函数                         */
/*************************************************************/
void SPI_send(unsigned char data)
{
  while(!SPI0SR_SPTEF);
  SPI0DRL = data;
}
 /*************************************************************/
/*                       SPI接收函数                         */
/*************************************************************/
unsigned char SPI_receive(void)
{
  unsigned char temp,data;
  while(!SPI0SR_SPIF);
  temp = SPI0SR;
  data = SPI0DRL;
  return(data);
}  
 
代码思想:
我通过SPI_send()函数把一个字节的数据存入EEPROM,然后用SPI_receive()函数把写入EEPROM的数据读出来。
在调试中,我全运行时,我在data窗口能读到SPI0DRL中的数据(此时的值是接收到的值)
但是我单步调试时,进入SPI_send()内部,我发送的数据不能写入SPI0DRL寄存器中?也就是我让SPI0DRL =80;但是我查看SPI0DRL时,它的值是255,这是怎么回事?这个255的意义是什么?
 
 
如果我想实现mc9s12上的两个SPI之间的通讯,假如我让SPI0作为主,SPI1作为从,我的代码又该如何设计?
我自己已经试过了,代码设计思路与上面给出的代码思想一致,就是多了SPI1的初始化函数,把它的模式设置为从,发送和接收函数也和上面的一致。
但是通讯不能正常建立,我不知道我的问题是什么?
 
 
再次,感谢您的帮助!
我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-30 17:42:32 | 显示全部楼层

RE:MC9S12XEP系列单片机spi通讯问题

楼主你好,关于16位单片机的问题,建议你到我们的官网建立一个技术服务请求,那边会有相关的工程师帮您解决。
问题描述请采用英文书写方式,建立服务请求的链接:
https://www.nxpic.org.cn/bbs/article_1280_578569.html
2楼,建立SR按钮
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

20

帖子

0

注册会员

Rank: 2

积分
82
最后登录
1970-1-1
 楼主| 发表于 2014-6-30 22:25:16 | 显示全部楼层

回复:MC9S12XEP系列单片机spi通讯问题

回复第 2 楼 于2014-06-30 17:42:32发表:
楼主你好,关于16位单片机的问题,建议你到我们的官网建立一个技术服务请求,那边会有相关的工程师帮您解决。
问题描述请采用英文书写方式,建立服务请求的链接:
https://www.nxpic.org.cn/bbs/article_1280_578569.html
2楼,建立SR按钮
 
 
感谢您的回复!
 
我还有一疑问,不知道一个MC9S12XEP100 上的两个SPI 模块可否实现通讯,假设SPI0 作为主模式,SPI1 作为从模式?实际上我也试了,没能完成,不知是本身这两个模块之间就不能这么通讯,还是我的配置有问题?我对这个很困惑
我在mpc563X的MCU 上这么做过,他可以实现,他的内部电路由连接,专门有一个寄存器是用来设置他们的主从模式和片选的
 
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-7-1 15:34:37 | 显示全部楼层

    RE:MC9S12XEP系列单片机spi通讯问题

    理论是可以的。看一下你的连接图。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 21:39 , Processed in 0.088258 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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