stc spi 求教
大侠们好,最近在搞STC-SPI的程序,但是怎么也搞不通,单片机:STC12LE5A60S2
晶振:33MHz
硬件连接:
程序如下:
sbit CS = P1^4;//从机选择
/************SPI初始化****************/
void intial_SPI(void)
{
//SPSTAT = 0xC0;//SPIF置0,WCOL置0,写1清0
SPCTL = 0xD4;//SSIG=1(SS忽略),SPI使能,MSTR = 1(主机模式),高位在前,时钟极性CPOL=0相位CPHA=1,速率11(CPUclock/4)
CS = 1;//不片选
}
//主机发送数据并同时进行接收数据
unsigned char Master_send(unsigned char Byte)
{
unsigned char ch = 0;
CS = 0; //选择从机
SPDAT = Byte; //启动发送
while(!(SPSTAT & 0x80)); //SPIF=0等待
SPSTAT |= 0xC0; //写1清0SPIF
CS = 1;
}
unsigned char Master_read()
{
unsigned char ch = 0;
CS = 0; //选择从机
while(!(SPSTAT & 0x80)); //SPIF=0等待
SPSTAT |= 0xC0; //写1清0SPIF
ch = SPDAT;
CS = 1;
return(ch);
}
请问上面的程序与电路连接有什么问题没有?????????????????
1.SST25VF的第3脚接低是写保护,楼主不打算往里写数据?
2.Master_send与Master_read里别操作CS,因为有许多指令不是一个字节就完了
3.SSIG置0才是单片机忽略SS脚,才能把SS脚当成普通IO口使用
4.Master_send里没写return,应当与Master_read整合成一个函数 本帖最后由 hpdell 于 2012-9-10 14:06 编辑
lcw_swust 发表于 2012-9-9 09:28 static/image/common/back.gif
1.SST25VF的第3脚接低是写保护,楼主不打算往里写数据?
2.Master_send与Master_read里别操作CS,因为有许 ...
1.SST25VF的第3脚接低是写保护,楼主不打算往里写数据?
我模拟对SST25VF进行读写是可以的呀!!难道是我买到 假货了!
还有就是STC的读写一定要整合成一个函数吗????
hpdell 发表于 2012-9-10 14:00 static/image/common/back.gif
1.SST25VF的第3脚接低是写保护,楼主不打算往里写数据?
我模拟对SST25VF进行读写是可以的呀!!难道是 ...
那么,把“模拟对SST25VF进行读写是可以的”程序贴出来看看。 lcw_swust 发表于 2012-9-10 15:05 static/image/common/back.gif
那么,把“模拟对SST25VF进行读写是可以的”程序贴出来看看。
http://www.amobbs.com/thread-4338422-1-1.html
这个是我以前发到论坛里面的 hpdell 发表于 2012-9-10 16:54 static/image/common/back.gif
http://www.amobbs.com/thread-4338422-1-1.html
这个是我以前发到论坛里面的
那就移植过来就是了 lcw_swust 发表于 2012-9-10 16:59 static/image/common/back.gif
那就移植过来就是了
我想用硬件的SPI,据说速度快一些嘛,但是目前还没有实现,纠结 hpdell 发表于 2012-9-10 17:34 static/image/common/back.gif
我想用硬件的SPI,据说速度快一些嘛,但是目前还没有实现,纠结
楼主注意一下上面的第2、3点
以及:
Spi_send_byte()与Master_send()的区别
Spi_get_byte()与Master_read()的区别
lcw_swust 发表于 2012-9-10 17:54 static/image/common/back.gif
楼主注意一下上面的第2、3点
以及:
Spi_send_byte()与Master_send()的区别
等会试一下看看,你有没有用STC的单片机的SPI功能来驱动SST25VF的芯片,如果有,能否提供一下相关的代码啊??????????
页:
[1]