[问题] 8051与MAX3100 SPI控制

楼主: wads90828 (阿干)   2015-01-31 19:50:08
各位版上先进好
小弟现在使用STC12C5A60S2的芯片
想透过SPI的方式写入资料到MAX3100
并且透过UART的方式传回给电脑看
也就是 8051→MAX3100→MAX3100的TX接PC的RX→透过TERMINAL看资料
可是TERMINAL都收不到资料
以下是程式码
麻烦看一下是哪里有错呢?
#include "STC12C5A60S2.h"
sbit SCLK = P1^7;
sbit MISO = P1^6;
sbit MOSI = P1^5;
sbit SPISS = P0^0;
#define MASTER
void spi(unsigned int dat );
void MAX3100init(unsigned int dat);
void main()
{
MAX3100init(0xc08b); //irda模式 9600bit/s 振荡器3.6864MHZ
while(1)
{
spi(0x8080); //发送资料到TX端
} }
void MAX3100init(unsigned int dat)
{
spi(dat);
}
void spi(unsigned int dat)
{ unsigned char i = 0;
unsigned int k;
k=dat;
SPISS=0; //选择从机
for(i=0;i<16;i++)
{
SCLK=0;
if(k & 0x8000)
{
MOSI=1 ;
}
else
{
MOSI=0;
}
SCLK=1;
k=k<<1;
}
SPISS=1;
}
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2015-02-01 08:38:00
你是直接接TTL还是透过IR发射器? IR ON 会使用IR编码喔
楼主: wads90828 (阿干)   2015-02-02 10:28:00
您好 我是新手不太懂 TTL是指我在外加电晶体吗? 我是把51直接接到max3100 没有再接其他电路唷
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2015-02-02 17:25:00
那把IR设为0吧
作者: jiannan1828 (我也不願意)   2015-02-03 00:56:00
MISO要改high,然后还要pull highIO2SPI,基本上没问题,我以前也做过pull high大概1.5K~2K
作者: ruemann (路人甲)   2015-02-27 18:04:00
啊就DELAY不够啊....你传2BYTE=20bits 20/4800=4.16ms啊你才delay2ms,最好是够
楼主: wads90828 (阿干)   2015-03-03 19:15:00
所以延长时间大于就可以吗? 还是有点问题耶

Links booklink

Contact Us: admin [ a t ] ucptt.com