MSP430讨论区
返回
登录/注册
F5529同时配置UCA1和UCB1出错
楼主
jixueyuan163 于 2014-08-13 11:15:24
F5529同时配置UCA1和UCB1出错
[P]楼主自己画的板子,是通过F5529控制前端模拟器件采集 并通过uart传数据到电脑上
与前端通信是用UCB1的SPI模式,前段时间调通了,并在示波器上看到了正确的数据流
后来写的UCA1配置UART的程序,单独程序调试时候可以将数据传输至电脑上,串口助手也可以看到正确的数据
但之后将俩段代码整合在一起时候,发现程序出错,SPI输出一直是低电平,所以串口助手看到全部是00 不知道有没有大神知道是怎么回事?
贴上代码[/P][P][CODE]//--------------------SPI setup------------------------------------------------
P4SEL |= BIT1+BIT2+BIT3; // P4.1-3 option select 3-PIN SPI
P4DIR |= BIT1; // SIMO output
P4DIR &= ~BIT2; // SOMI input
P4DIR |= BIT3; // CLK output
P4OUT |= BIT0; //P4.0输出高电平 /CS disabled
P4DIR |= BIT0; //P4.0 for CS
UCB1CTL1 |= UCSWRST; // **Put state machine in reset**
UCB1CTL0 |= UCSYNC+UCMST+UCMSB+UCCKPL; // SPI master
UCB1CTL0 &= ~UC7BIT; // 8-bit
UCB1CTL0 &= ~UCCKPH;
UCB1CTL1 |= UCSSEL_2; // SMCLK=1.048M
UCB1BR0 = 0; // 不分频
UCB1BR1 = 0; //
UCB1CTL1 &= ~UCSWRST;
UCB1IE = 0;
[/CODE][/P][P]
[/P][P][CODE] UCSCTL4 |= SELA__REFOCLK; // ACLK = REFOCLK
//---------------------UART发送到PC机--------------------------------------
P4SEL = BIT4+BIT5; // P4.4,5 = USCI_A1 TXD/RXD
UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
UCA1CTL1 |= UCSSEL_1; // CLK = ACLK
UCA1BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide)
UCA1BR1 = 0x00; //
UCA1MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0
// UCA1CTL1 |= UCSSEL_2; // SMCLK
// UCA1BR0 = 6; // 1MHz 9600 (see User's Guide)
// UCA1BR1 = 0; // 1MHz 9600
// UCA1MCTL = UCBRS_0 + UCBRF_13 + UCOS16; // Modln UCBRSx=0, UCBRFx=0,
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
// UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt
//--------------------------------------------------------------------------
[/CODE][/P][P]
[/P][P]开始以为是都用到SMCLK出错 于是将UART配置成ACLK并将REFO付给ACLK……
但是依旧出错……有没有大神遇到过这种情况?
应该IO口都没有复用啊 是中断问题?还是别的?[/P]
回复
1楼
DC 于 2014-08-13 14:35:48
你好,看你发贴还是比较认真对待的,赞一个[EM10]。
[CODE]P4SEL = BIT4+BIT5; // P4.4,5 = USCI_A1 TXD/RXD [/CODE]
改成这样试试...
[CODE]P4SEL |= BIT4+BIT5; // P4.4,5 = USCI_A1 TXD/RXD [/CODE]
有结果跟大家分享.
回复
2楼
jixueyuan163 于 2014-08-13 17:12:21
首先非常感谢版主大大的回答,一直在微控网下载资料,学到了不少知识。
这个,先得抽自己一巴掌,居然调了一天多没看出这个问题来,太不细心了。
下午看到大大的回答,就修改调试了一下,修改后第一次编译调试,SPI的时序就没有问题了,当时代码把UART传输数据的代码block掉了,之后加入那部分代码后第二次调试SPI的时序就又乱了。
直到现在还没结果……我先再调调……然后再回复= =+
回复
1
电脑版
Page created in 0.1562 seconds width 3 queries.