ATmega32 发表于 2008-6-16 16:16:16

求助:AVR和MSP430 SPI通讯不起来

ATmega8从机:

void spi_init(void)
{
SPCR = (1<<SPE)|(1<<CPHA);// 从机模式,前沿输出,后沿采样,MSB先,闲置低电平
SPSR = 0x00;               
}

uint8 spi_send_byte(uint8 data)//循环等待主机读取读取
{
SPDR = data;
while (!(SPSR & (1<<SPIF)));
data = SPDR;   //清SPIF位
return 1;
}

主机MSP430F2012:
void spi_init(void)   //SPI初始化
{
USICTL0= USIPE7+USIPE6+USIPE5+USIMST+USIOE+USISWRST;   // SPI Port使能,SPI输出使能, SPI master
USICTL1= 0;                                          // 前沿输出,后沿采样
USICKCTL = USIDIV_5 + USISSEL_2;                         // 时钟源SMCLK,32分频 250k

TI_CC_SPI_USART0_PxSEL |= TI_CC_SPI_USART0_SIMO | TI_CC_SPI_USART0_SOMI | TI_CC_SPI_USART0_UCLK; // SPI option select
TI_CC_SPI_USART0_PxDIR |= TI_CC_SPI_USART0_SIMO + TI_CC_SPI_USART0_UCLK;

USICTL0 &= ~USISWRST;
}

uint8 spiReadByte(void)
{
uint8 rByte;
P2OUT &= ~Test_cs;
USICNT=8;
while(!(USICTL1 & USIIFG)) ;      //等接收完
rByte = USISRL;                   //接收数据
P2OUT |= Test_cs;
return rByte;
}

请问设置对吗?
怎么通讯不起来?

ATmega32 发表于 2008-6-16 17:05:17

哪位能否给个SPI双机通讯实例?

zxq6 发表于 2008-6-16 17:34:44

我以前做过一个m16双机的,家里找不到,明天到公司找找,找到了发给你参考参考。

ATmega32 发表于 2008-6-16 17:42:51

多谢楼上。

已经郁闷了好几天。

zxq6 发表于 2008-6-16 20:21:11

点击此处下载 ourdev_313602.rar(文件大小:9K) (原文件名:m16spi.rar)
来了,我花了点时间整理了一下,希望对你有用。

mljda 发表于 2008-6-16 23:52:33

示波器!当年学校学串口。。我硬是读bit来着。。。

ATmega32 发表于 2008-6-17 10:53:25

我用MSP430美0.5s读取SPI一次,用示波器看,主机SPI输入线SOMI和SPI时钟线SCLK:

1.SCLK电平空闲是低电平,八个方波脉冲,波长4us.
2.SOMI电平变换在SCLK上升沿的时候
3.SOMI电平变换不规则
4.SOMI在SCLK空闲时,可能是高电平,也可能是低电平。

哪里不对?

ATmega32 发表于 2008-6-17 11:28:16

用示波器 观看SIMO:

1.SIMO电平在SCLK空闲时为地电平
2.SIMO电平电平变换在SCLK下降沿的时候。
3.SIMO可能在SCLK第一个上升沿前10us(2.5个SCLK周期)变成高电平
4.SIMO在SCLK最后一个下降沿后,电平缓慢降低到0(约1ms).(这里需要下拉电阻吗)?

cramkl 发表于 2008-6-17 13:20:53

你ATmega8和MSP430之间各个引脚是怎么接的,特别是SCLK,中间有没有电阻,阻值多大?
可能是时钟信号SCLK不稳定造成的
SCLK对高低电平比MISO MOSI要敏感
也就是说你要保证SCLK信号在高电平的时候足够高,低电平的时候拉到地
希望对你有帮助

cocoasuny 发表于 2011-10-11 09:41:11

回复【5楼】mljda 技术是人性
-----------------------------------------------------------------------

找到通道中人了,示波器看串口数据,还TM的是一位一位的数的!!
页: [1]
查看完整版本: 求助:AVR和MSP430 SPI通讯不起来