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.

[参考译文] MSP430FR6047:UCB0CTLW0寄存器赢得#39;t Get 设置

Guru**** 2979400 points

Other Parts Discussed in Thread: MSP-TS430PZ100E, DAC7750

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/945612/msp430fr6047-ucb0ctlw0-register-won-t-get-set

器件型号:MSP430FR6047
主题中讨论的其他器件:MSP-TS430PZ100E、 DAC7750

大家好!

我尝试通过 SPI 与 DAC7750进行通信。 我正在使用 MSP-TS430PZ100E 目标板。

我尝试像这样设置寄存器;

UCB0CTLW0 |=UCSWRST;
UCB0CTL1 |= UCSWRST;//启用 SW 复位
UCB0CTL0 |=(UCMST+UCMSB+UCSYNC+ UCCKPH);// SPI 主设备,3线,同步模式
UCB0CTL1 |= UCSSEL_2;// SMCLK */
UCB0BR0 = 8;
UCB0BR1 = 0;
UCB0CTL1 &=~UCSWRST;

但寄存器不会被设置。 我出了什么问题? 如下所示、该寄存器不变、但 UCB0BR 寄存器确实发生了变化。

我将 UCA2用于 RS-485通信、它运行良好。 它是寄存器、可以毫无问题地进行设置。

UCB0是否是一件特殊的事情?

请帮我!!!!

Sukho

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

    我看到两个问题。

    首先、您将 ORing 位放入寄存器中、因此除了复位位位位外、不会清除任何内容。 其次、您将混合对同一控制寄存器的字和字节访问。 虽然在执行此操作时为要使用的各种位定义了符号、但您不会使用它们。 因此、当您尝试将 UCMST 设置为0x0800时、它会由于字节访问而消失。

    尝试使用对 UCB0CTLW0的所有字访问、并从"UCB0CTLW0 =UCSWRST"开始将其复位。

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

    Shultz 先生;

    谢谢你。 您解决了我的问题。

    此致、

    Suh、Sukho