This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5529:MAX6952

Guru**** 2535590 points
Other Parts Discussed in Thread: MSP430F5529

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/580597/ccs-msp430f5529-max6952

部件号:MSP430F5529

工具/软件:Code Composer Studio

我有一个项目需要使用msp430f5529在5x7 LED矩阵中显示预定义消息。 我还在使用一个名为MAX6952的驱动程序来驱动矩阵。 我已经编写了一些编码,但遗憾的是,LED矩阵没有响应我的编码。 我想知道是否有人能帮助我发现我的错地方。  

感谢您抽出宝贵的时间来了解这一情况并提供帮助。  

// Ali Louangrath
//主项目- LED显示
//版本1.1
//
//
//
// MSP430F552x
//-----------
///|\||
//||||
//--|RST |
//||
//| WFP 3.3 |->数据输出(UCA0SIMO)
//||
//| WFP 3.4 |<-数据输入(UCA0SOMI)
//||
//从属复位<|WFP 1.1 2.7 |->串行时钟输出(UCA0CLK)
//
// ACLK =~32.768kHz,MCLK = SMCLK = DCO ~ 1048kHz。 BRCLK = SMCLK/2
//

#include <msp430f5529.h>

#define blink BIT3 // 2.3
#定义CS BIT4 // 2.4

#define DOUT BIT3 // 3.3 SIMO
#define DIN BIT4 //SOMI 3.4

#define CLK BIT7 // 2.7 未使用USCI时钟

//unsigned char init_max6952[12]={0x04,0x01,0x03,0x01,0x01,0x0f,
// 0x02,0x0f,0x01,0xf0,0x02,0xf0};
//unsigned char letter_a[2]={0x60,0x41};

//ASCII字符为十六进制//
字符A=0x41;
字符E=0x45;


//MSP430F5529//
void ConfigWDT (void);
//void ConfigTimerA (void);
void ConfigSPI(void);
void init_max6952 (void);
void send (无符号字符值);
void send_addr_data(unsigned char addr,unsigned char data);


作废配置WDT (void)

WDTCTL = WDTPW + WDTHOLD;
}


void ConfigSPI(void)

易失性无符号int I;

P2OUT ||闪烁+ CS;

P2DIR ||闪烁+ CS;//将WFP 2.3 ,WFP 2.4 设置为输出方向
P3SEL || DIN+DOUT;//WFP 3.3 - DATAOUT 3.4 - datain
P2SEL || CLK;/WFP 2.7 -串行时钟输出SMCLK

UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL0 || UCMST+UCSYNC+UCCKPH+UCMSB;// 3引脚,8位SPI主控制器
//时钟极性高,MSB
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0x01;// 1.
UCA0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0IE |= UCTXIE;//启用USCI_A0 TX中断

__bis_sr_register(LPM0_bits + GIE);// CPU关闭,启用中断
}


void init_max6952 (void)

send_addr_data(0x04,0x01);//配置寄存器正常模式+禁用闪烁
send_addr_data(0x03,0x01);//扫描限制为0-3

send_addr_data(0x01,0x0f);//数字0的最大强度
send_addr_data(0x02,0x0f);//数字1的最大强度
send_addr_data(0x01,0xf0);//数字2的最大强度
send_addr_data(0x02,0xf0);//数字3的最大强度
}


void led数据()

send_addr_data(0x60,a);
__DELAY周期(2);
send_addr_data(0x60,E);
__DELAY周期(2);
}


void send (无符号字符值)

//unsigned char I;


UCA0CTL0 |=~UCCKPL;//时钟引脚低

同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?

UCA0TXBUF =值和0x80;
值=值<1;

__DELAY周期(2);

同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?

UCA0CTL0 |= UCCKPL;//时钟引脚高


}


void send_addr_data(unsigned char addr,unsigned char data)

P2OUT &=~CS;/CS低
send (addr);
发送(数据);
P2OUT |= CS;/CS高

}


void main()

void ConfigWDT();
void ConfigSPI();
void init_max6952();
//void ConfigTimerA();

同时(1)

LED_DATA();
__DELAY周期(2);
}

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SPI初始化(包括UCCKPH和UCCKPL位)是正确的,但您在ConfigSPI结尾处输入LPM0,而不需要退出LPM来开始在INIT_max6952内部通信。 简单的CCS调试已经表明了这一点,请进一步调试您的代码并研究TI提供的示例,然后再在CCS论坛上发布更多问题。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在SPI初始化之外移动该代码行,但仍然没有任何内容。 我也不熟悉在CCS中使用调试器,因此我仍然不能肯定我的代码有什么问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的正在切换时钟极性-连接的模块是否需要? 这对于单个从属设备来说非常罕见。 您是否测量了是否有一些输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于驱动程序,它的设置类似于MAX6952能够写入
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有比现在更好的时间去学习。 您还会发现,SPI线路的示波器或逻辑分析仪屏幕截图对于解决问题至关重要。

    此致,
    Ryan