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

9s08QG8遇到新问题

9s08QG8遇到新问题

最近刚接触S08QG系列,使用过程中SPI模块出现问题,时钟有,但是不出数据,又遇到这种情况的没,提示一下。
void InitSpi(void) //初始化
{
SPBR=0x8b;
SPCR1=0x50;
}
void FND_Display(byte Count_Data)//调用程序
{
byte kp;
for(kp=0 ; kp<3 ; kp++);
while(! (SPSR & 0x20) ); SPDR=Count_Data;
FND_Count_H;
for(kp=0 ; kp<15 ; kp++);
FND_Count_L;
COP_REFRESH;/喂狗
}
努力做到最好
SPI主机的时钟和数据应该是一起出来的,有时钟就应该有数据。如果看不到信号,很可能数据是全1或全0。
海纳百川  有容乃大
strongchen版主你好,谢谢你的指点,不过我怎样改变数据都是只有CLK,没有数据,不知道问题出在哪里?
努力做到最好
把你的整个project贴出来看看吧。
海纳百川  有容乃大
void main(void)
{
sei;
InitIcs();
InitRISC();
InitPort();
InitTimer();
InitSpi();
InitSci();
cli;

for (;;)
{

FND_Display(0xaa,0xaa);

COP_REFRESH; //喂狗
}
}
void InitSpi(void)
{
SPCR1=0x50;
SPBR=0x8b;
}
void FND_Display(byte Count_DG,byte Count_Data)
{
byte kp;
for(kp=0 ; kp<3 ; kp++);
//while(IS_SPI_TRA_EMPTYN); SPDR=Count_Data; // 000x xxxx
while(! (SPSR & 0x20) ); SPDR=Count_Data;
FND_Count_H;
for(kp=0 ; kp<15 ; kp++);
FND_Count_L;

for(kp=0 ; kp<3 ; kp++);
//while(IS_SPI_TRA_EMPTYN); SPDR=Count_DG; // 0000 0010
while(! (SPSR & 0x20)); SPDR=Count_DG;
FND_DG_H;
for(kp=0 ; kp<15 ; kp++);
FND_DG_L;

COP_REFRESH; //{asm sta aSRS;}
}
努力做到最好
还需要其他的吗?
努力做到最好
其中SCI模块可用,
努力做到最好
你可以把问题描述和程序发送到:
support.asia@freescale.com
请把整个project打包,做成一个压缩文件,用上传功能贴出来。
海纳百川  有容乃大
我已经发Email 了,我使用的是Codewight,Hiware Tools 也可以吗?
努力做到最好
Project  一共 20多个文件  与 CodeWarrior  无法短时间兼容
努力做到最好
那你把其他那些模块的初时化程序也贴出来吧。
海纳百川  有容乃大
void InitIcs(void)
{
ICSCR1=0x04;
ICSCR2=0x00;
ICSTRM=0x80;
}
void InitRISC(void)
{
/* SOPT: COPE=0,COPT=1,STOPE=0 */
SOPT1 = 0xd2;
SOPT2 = 0x00;
SDIDL = 0x09;
SPMSC1 = 0x1c;
SPMSC2 = 0x00;
IRQ_IE_DIS;
IRQ_IRQPE_DIS;
//SPMSC3 = 0x00;
}
void InitPort(void)
{
DDRA=0xc8; // 1100 1000
PTA=0xf7; // 1111 0111
PTAPUE=0x07;// Internal Pullup Enable
PTASE=0x3f; // Output Slew Rate Control Enable
PTADS=0x08; // Output Drive Strength Selection
//PTA0 SW1 SET_SW
//PTA1 SW2 UP_SW
//PTA2 SW3 DOWN_SW
//PTA3 Buzzer
//PTA4 Sensor2
//PTA5 Sensor1

DDRB=0xaa; // 1110 1110
PTB=0x00; // 0000 0000
PTBPUE=0xff;// Internal Pullup Enable
PTBSE=0xff; // Output Slew Rate Control Enable
PTBDS=0x00; // Output Drive Strength Selection
//PTB0 RxD
//PTB1 TxD
//PTB2 SCK
//PTB3 MOSI
//PTB4 MISO
//PTB5 Eeprom_CS
//PTB6 DG_Str
//PTB7 Count_Str
}
void InitTimer(void)
{
union _word2 TimerBuf;
TimerBuf.hl=2930;

T1MODH=TimerBuf.ch[0];//
T1MODL=TimerBuf.ch[1];

TIM1_MODE_EDGE;
TIM1_CLK_BUS;
TIM1_BAUD_32ms;
TIM1_INT_ENA;

T1C0_MSB_ENA;
T1C0_MSA_DIS;
T1C0_MSB_DIS;
T1C0_MSA_ENA;
TIM1_FLAG_CLEAR;
}
这是全部的程序
努力做到最好
感谢斑竹,问题已经解决,换了一个芯片,我也不知道什么原因?上一个芯片的其他模块都好用,只有SPI模块不出数据。
努力做到最好
返回列表