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.

[参考译文] MSP430FR2355:msp430fr2355.h 中的 SPI 时钟极性和相位定义不一致

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1323741/msp430fr2355-spi-clock-polarity-and-phase-defines-are-inconsistent-in-msp430fr2355-h

器件型号:MSP430FR2355

您好、MSP430团队:

我正在使用项目中包含的 msp430fr2355.h。

我注意到 msp430fr2355.h 定义了不一致的 SPI 时钟相位和极性。

有关定义 UCCKPL_H、UCCKPL_1_H、UCCKPL__HIGH_H UCCKPH_H、UCCKPH_1_H  右移8位。

如果是特意为目的进行的、请告诉我。 在"h"文件中添加注释也会有所帮助。

#define UCCKPL                           (0x4000)        /* Clock polarity select */
#define UCCKPL_H                         (0x0040)
#define UCCKPL_0                         (0x0000)        /* The inactive state is low */
#define UCCKPL_1                         (0x4000)        /* The inactive state is high */
#define UCCKPL_1_H                       (0x0040)
#define UCCKPL__LOW                      (0x0000)        /* The inactive state is low */
#define UCCKPL__HIGH                     (0x4000)        /* The inactive state is high */
#define UCCKPL__HIGH_H                   (0x0040)
#define UCCKPH                           (0x8000)        /* Clock phase select */
#define UCCKPH_H                         (0x0080)
#define UCCKPH_0                         (0x0000)        /* Data is changed on the first UCLK edge and captured on the 
                                                            following edge. */
#define UCCKPH_1                         (0x8000)        /* Data is captured on the first UCLK edge and changed on the 
                                                            following edge. */
#define UCCKPH_1_H                       (0x0080)

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

    一些用户更喜欢(出于某种原因)将16位控制寄存器作为两个8位寄存器进行访问。

    sfr_w(UCA0CTLW0);                             /* eUSCI_Ax Control Word Register 
    0 */
    sfr_b(UCA0CTLW0_L);
    sfr_b(UCA0CTLW0_H);
    
    由于 UCCKPL 位于 MSB 中、除非向右移位8位、否则定义的值将不起作用。