这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 合作大赛 » B题的通讯终于OK了。SPI方式。

共14条 1/2 1 2 跳转至

B题的通讯终于OK了。SPI方式。

菜鸟
2009-09-03 18:53:50     打赏

终于能通讯了,发个感慨。折磨人啊。我是用SPI进行通讯的,驱动了3路直流电机。
不容易,跟大家分享一下。下面是我的程序,只能提供到此地步了。继续努力弄其他的。

#define SCK P1.2
#define SO P1.0
#define SI P1.1
#define RESET P1.3
void delay(void)
{
unsigned char i;
for(i=0;i<50;i++);
}
void delayms(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++)
;
}
void SPISendByte(unsigned char data)
{
unsigned char n,temp;
temp=data;
for(n=0;n<8;)
{
SCK=0;
if(temp&0x80)
  SO=1;
else
  SO=0;
delay();
SCK=1;
delay();
n++;
temp=(temp<<1);
}
SCK=0;
}
void main( void )
{
/*添加必要的初始化程序*/
RESET=0;   /*先复位*/
SCK=0;    /*SCK信号,上电后要输出低*/
SO=0;
delayms(5);
RESET=1;
delayms(5);
SPISendByte(0x5c);   /*寄存器控制字*/
SPISendByte(0x00);   /*对应寄存器的值*/
delayms(1);      /*两帧数据之间要加>1ms的延时,同一帧的两组数据之间不用*/
SPISendByte(0x50);  /*通道1*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x53);
SPISendByte(0x80);
delayms(1);

SPISendByte(0x54);  /*通道2*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x57);
SPISendByte(0x80);
delayms(1);

SPISendByte(0x58);  /*通道3*/
SPISendByte(0xe0);
delayms(1);
SPISendByte(0x5b);
SPISendByte(0x80);
delayms(1);

delayms(1000);
SPISendByte(0x50);   /*通道1停*/
SPISendByte(0x00);
while(1)
  {
 
  }
}




关键词: 题的     通讯     终于     方式     delayms     SPISe    

菜鸟
2009-09-03 18:54:46     打赏
2楼
沙花弄走

院士
2009-09-04 08:38:19     打赏
3楼
晚上快7点做出来的
不容易啊

昨天晚上应当是好好休息吧

菜鸟
2009-09-04 08:52:54     打赏
4楼
LZ 输出的波形怎样?

专家
2009-09-04 09:31:51     打赏
5楼

模拟的SPI口。用的什么MCU。


高工
2009-09-04 09:43:22     打赏
6楼
赞一下楼主的分享精神!祝你取得好成绩。其他人也要加油啊。

菜鸟
2009-09-04 09:46:01     打赏
7楼
这个程序,还得稍微改一下才行的

工程师
2009-09-04 09:52:49     打赏
8楼
谢谢分享啊

助工
2009-09-08 16:06:17     打赏
9楼

参考一下,最近要做一个CPLD和DSP的SPI接口,不知道怎么入手呢


菜鸟
2009-10-04 16:18:24     打赏
10楼

还可以


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]