我用的是1611 主频8M SPI设置时钟模式1 能正常读写
现在外设器件要求模式0或3
我改变设置模式的CKPL,CKPH 读写就不正常了
写55 模式3读出的是AA 模式0不管写什么读的都是6C
初始化程序如下,请大家帮忙看看,非常感谢!
void init_SPI(void)
{ UCTL1=SWRST;
UCTL1=CHAR+SYNC+MM; //设置 8-bit 字符模式,主模式
UTCTL1= SSEL1+SSEL0+STC; // 设置 SMCLK 和 3-pin 模式,默认时钟为低;
U1BR0 = 0x02; //设置波特率
U1BR1 = 0x00;
U1MCTL = 0x00;
UCTL1&=~SWRST;
ME2 |= USPIE1; // 使能 USART1 SPI 模式
P5SEL |= 0x0e; //P5.1~3 置位外围模块
P5DIR&=~BIT2;
P5DIR|=BIT1;
P5DIR|=BIT3;
}
Peter_Zheng:
// MSP430F21x2
// —————–
// /|\| XIN|-
// | | |
// HC165 –|RST XOUT|-
// ———- | |
// 8 | /LD|<—|P3.6 |
// -\->|A-H CLK|<—|P3.0/UCA0CLK |
// |-|INH QH|—>|P3.5/UCA0SOMI |
// |-|SER | | |
// v
//
//
// A. Dannenberg
// Texas Instruments Inc.
// October 2006
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
//******************************************************************************
#include "msp430x21x2.h"
volatile unsigned char Data;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P3SEL |= 0x21; // P3.0,5 USCI_A0 option select
P3DIR |= 0x40; // P3.6 output direction
UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 |= 0x02;
UCA0BR1 = 0; //
UCA0MCTL = 0;
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
发一个标准的spi配置代码,可以参考一下
xiaoming tang:
回复 Peter_Zheng:
我试了一个铁电存储器也是一样的 只有模式1可以正常读写,别的模式都不行,USB芯片测试SPI程序也是一样的现象。模式1没问题,写入0X55,模式0读出的是没规律数据,模式1读的是55,模式2读的是AA,模式3读出的是D5。