智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2995|回复: 7
打印 上一主题 下一主题

DG128的SPI模块问题

[复制链接]

11

主题

146

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4766

优秀会员奖章活跃会员奖章论坛元老奖章

QQ
威望
2070
贡献
2500
兑换币
13
注册时间
2010-9-11
在线时间
98 小时
跳转到指定楼层
1#
发表于 2011-10-22 19:50:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,其实SPI也就才几寄存器,但是我写了不知道怎么来检测它是否好使,程序写好了,有主程序里一直调用SPI_Init();   但是CLK引脚上一直不出波形,不知道是为什么,请大家看看,也许可以解决我的这个困惑。
  1. #include <hidef.h>      /* common defines and macros */
  2. #include <mc9s12dg128.h>     /* derivative information */
  3. #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

  4. //-----------------------------------------------------
  5. //延时1毫秒
  6. void Dly_ms(int ms)
  7. {
  8.    int ii,jj;
  9.    if (ms<1) ms=1;
  10.    for(ii=ms;ii>0;ii--)
  11.      for(jj=0;jj<2670;jj++);    //busclk:16MHz--1ms
  12. }
  13. //-----------------------------------------------------   
  14. //SPI写一个字节
  15. void SPI_Write_Byte(unsigned char val)
  16. {
  17.         SPI0DR = val;
  18.         while(!(SPI0SR_SPIF));
  19.         return;
  20. }
  21. //-----------------------------------------------------
  22. //SPI读一个字节
  23. unsigned char SPI_Read_Byte(void)
  24. {        
  25.         while(!(SPI0SR_SPIF));
  26.         return SPI0DR;
  27. }
  28. //-----------------------------------------------------
  29. //SPI初始化,速率400kbps
  30. void SPI_Init(void)
  31. {
  32.   DDRT = 0xff;
  33.   MODRR   = 0x00;  
  34.   SPI0CR2 = 0x10;
  35.   SPI0CR1 = 0x4e;   
  36.   SPI0BR  = 0x42; //BR=busclk/((SPPR + 1)· 2^(SPR + 1))=16000/(5*8)=400k                 
  37. }
  38. //-----------------------------------------------------
  39. //总线频率为16M
  40. void setbusclock(void)
  41. {   
  42.     CLKSEL=0X00;                                          //disengage PLL to system
  43.     PLLCTL_PLLON=1;                                  //turn on PLL
  44.     SYNR=1;                                                                               
  45.     REFDV=1;                                  //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
  46.     _asm(nop);                    //If PLL is selected (PLLSEL=1), Bus Clock = PLLCLK / 2=16M     
  47.     while(!(CRGFLG_LOCK==1))
  48.       _asm(nop);                        //when pll is steady ,then use it;
  49.     CLKSEL_PLLSEL =1;                          //engage PLL to system;
  50. }
  51. //======================================================
  52. void main(void) {
  53.   unsigned char spich=0;
  54.   EnableInterrupts;
  55.   
  56.   setbusclock();  

  57.   for(;;)
  58.   {
  59.   SPI_Init();
  60.   
  61.   }
复制代码

11

主题

146

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4766

优秀会员奖章活跃会员奖章论坛元老奖章

QQ
威望
2070
贡献
2500
兑换币
13
注册时间
2010-9-11
在线时间
98 小时
2#
 楼主| 发表于 2011-10-22 20:28:18 | 只看该作者
经过自己的测试已经可以了,一个比较小的问题,在主程序中永远向外面发SPI_Send_Byte();就可以看到时钟信号了,希望对大家有用、
回复 支持 反对

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
937
QQ
威望
573
贡献
218
兑换币
6
注册时间
2010-11-23
在线时间
73 小时
3#
发表于 2011-10-22 20:55:29 | 只看该作者
为啥现在还在用DG128.。。
回复 支持 反对

使用道具 举报

11

主题

146

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4766

优秀会员奖章活跃会员奖章论坛元老奖章

QQ
威望
2070
贡献
2500
兑换币
13
注册时间
2010-9-11
在线时间
98 小时
4#
 楼主| 发表于 2011-10-23 11:56:44 | 只看该作者
回复 3# 靠岸


    DG很弱吗?
回复 支持 反对

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
937
QQ
威望
573
贡献
218
兑换币
6
注册时间
2010-11-23
在线时间
73 小时
5#
发表于 2011-10-25 15:05:17 | 只看该作者
回复 4# 很高很瘦


    dg强于xs
回复 支持 反对

使用道具 举报

8

主题

130

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1030
QQ
威望
637
贡献
259
兑换币
100
注册时间
2012-2-14
在线时间
67 小时
毕业学校
南阳理工学院
6#
发表于 2012-2-20 12:54:32 | 只看该作者
新手来看看
回复 支持 反对

使用道具 举报

10

主题

507

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
QQ
威望
1302
贡献
390
兑换币
8
注册时间
2011-2-25
在线时间
178 小时
7#
发表于 2012-3-8 17:31:01 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
威望
225
贡献
55
兑换币
0
注册时间
2010-12-14
在线时间
11 小时
8#
发表于 2012-8-1 19:34:43 | 只看该作者
问一下 SPI初始化中
DDRT = 0xff;

  MODRR   = 0x00;起什么作用?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 18:10 , Processed in 0.057680 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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