主题中讨论的其他部件:MSP-EXP430FR5969,
工具/软件:Code Composer Studio
尊敬的各位:
我正在测试MSP430和UHF RFID IC标签SL900A之间的SPI接口。 问题是:我无法在SL900A中写入/读取数据。 硬件方面存在一个大问题。 我不知道为什么。 请在这方面帮助我。 非常感谢。
1)硬件设置:
* MSP430:我使用MSP-EXP430FR5969和eUSI_A1 SPI模块:WFP 2.4 :UCA1CLK (32 kHz);2.5 :UCA1SIMO;WFP 2.6 :UCA1SOMI;MCU使用CLK = 1MHz
* SL900A:如下所示,除了引脚2连接到引脚8 (在第3页数据表中推荐)。 电池为2.5V (但MCU通过USB直接连接到计算机,因此SL900A和MCU的Vcc不同)。
2)编码:
#include <MSP40.0>
volatile unsigned char RXData =0;
volatile unsigned char TXData;
volatile unsigned char var=0;
volatile unsigned int count=0;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//配置GPIO
P2SEL1 |= BIT4;// USCI_A1操作
P2SEL1 P2SEL1 |= BIT5| BIT5; // USICI_A1 operation
PJSEL0 |= BIT4| BIT5;//对于XT1
P1DIR |= BIT4 + BIT0;
//禁用GPIO通电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLP5;
// XT1设置
CSCTL0_H = DCSCSEL1=解锁DCSCSEL0;
//将DCO设置为1MHz
CSCTL2 = LAST__LFXTCLK | SELL__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIV__1 | DIVM__1;//设置所有分频器
CG1 SCTL4 &=~OFTOFF;
DO
{ CSCTL5&FFFG=
~
FASTF0 ~FASTF0 FASTF0;FASTF0 FASTF0;FAST= FASTFF1 F0;FASTAULLFF1 F0
//锁定CS寄存器
//为SPI操作配置USCI_A0
UCA1CTLW0 = UCSWRST;//**将状态机置入复位**
UCA1CTLW0 |= UCSSEL | UCSYNC | UCMSB;// 3引脚,8位SPI主控,MSB优先
//时钟极性:数据通过第一个低到高的CALW_UCCLSK转换进行更改
; // aclk
UCA1BR0 = 0x00;// fclk = 32kHz
UCA1BR1 = 0;//
UCA1MCTLW = 0;//无调制
UCA1CTLW0 &=~UCSWRST;//**初始化USCI状态机_UCA1IE
|= UCRXOUT;//启用UCA1SEN
=启用UCSWSRE; CA1=启用UC1UCIE 1UCA1UCIE
__bis_sr_register(LPM0_bits | GIE);// cpu off, enable interrupts
__delay_cycles(2000);// delay before next transmission
P1OUT ^= BIT0;
}
#if
defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=UIT0;}#SCI_void IS_Is_Is_Is_Isr_Isr_Isr_Isr_Isr_Isr_version__)
#endif
{
SWITCH(__EIN_RANGE(UCA1IV, USCI_SPI_UCTXIFG)){
CASE USI_NONE: Break;
CASE USI_SPI_UCRXIFG:
RXData = UCA1RXUF;
UCA1IFG &=~UCRXIFG;__BIC_SR_UCRXSPI= UCRX64;
CA0= USCXSPF= UCA0;CA1= UTXF= UCA1= UCA1= UCAXSPXXXSPF0
;CA0;CA1= UCA1= UCAXSP_CA1= CAXSPXXXXSPF0;CA0;CA1= UCAXSPF= UCA1= UCA1= UCA1= UCA1= UCA1= UCA1= UCA1=
UCA1TXUF = TXData;//传输字符
var++;
}
否则为(var ==2){
TXData = 0x55;
UCA1TXBUF = TXData;//传输字符
++;
}
UCA1IE &=~UCTXIE;
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits);中断设置
;}下一个TX:默认值
3)问题:
*读数:当我尝试从FIFO (使用Direct Command)读取数据时,我只听到了噪音。 请看下面的图片,当(1):SPI CLK,(2):WFP 2.6 (UCA1SOMI)。 还有一件事:我必须断开SL900A和MCU之间的GND。 如果它们的GND已连接,我就没有CLK (只有峰值而不是位0-1)。
*写入:我尝试将数据(0x55)写入SL900A的用户内存,从0x064的地址开始。 这是我写入SL900A的3个字节。 但是,当我从阅读器(RFID接口)读取用户内存时,数据全部为0。
(1):SPI CLK;(2):WFP 2.5 (UCA1SIMO)
字节1:0x00 (写入命令)
字节2:0x64 (SL900A EEPROM的地址)
字节3:0x55 (要写入的数据)
我很困惑。 请帮我解释这些事情。 非常感谢。







