|
楼主 |
发表于 2013-9-18 15:34:56
|
显示全部楼层
qq2355355257 发表于 2013-9-18 15:26
你在参考下Datasheet
手册我看了不少回了。
有些细节可能看不到。
现在初步发现我SPI读取写入遇到了问题,就像这张图片,设计了标志打印。
正常1、2、X、3、X、4(x代表返回值)。现在打印出3后就卡住了。明显SPI出了问题。
以下是我的SPI代码- void MSPI_Init(void) //SPI初始化
- {
- SPCR = 0;
- SPCR = (1 << SPE) | (1 << MSTR) | _BV(SPR1) | _BV(SPR0); //使能SPI,主机方式,MSB在前,模式0,64分频.
- }
- void InitPortVS1003(void)//ATmega16与vs1003的接口的初始化
- {
- DDRB |= _BV(PB1) | _BV(PB5) | _BV(PB7); //XRST,MOSI,SCK设置输出
- DDRB &= ~_BV(PB6); //MISO设置输入
- PORTB |= _BV(PB1) | _BV(PB5) | _BV(PB6) | _BV(PB7); //设置上拉
- DDRD |= _BV(PD6) | _BV(PD7); //分别是:XCS,XDCS
- DDRD &= ~_BV(PD5); //DREQ,设置输入
- PORTD |= _BV(PD5) | _BV(PD6) | _BV(PD7);
- MSPI_Init(); //SPI初始化
- }
- unsigned char SPIPutChar(unsigned char dat)//通过SPI发送一个字节的数据
- {
- SPDR = dat;
- while(!(SPSR & _BV(SPIF)));
- return (SPDR);
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|