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.

[参考译文] MSP430F5529:生成同步PWM波形

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/632000/msp430f5529-generating-synchronous-pwm-waveform

部件号:MSP430F5529
在“线程:ADS8363”中讨论的其他部件

我想生成两 个PWM波形, 其中一个是最后的时钟,我需要与ADS8363通信,但由于正常SPI不工作,我想知道如何生成同步波形(并且具有少量相位差),以便我可以使用一个PWM波形CLK来连续触发其他PWM RD/CONVST )。我正在尝试使用MSP中的TA_0和TA_1。

请您提供一些非常有用的示例代码吗?我尝试从外部将一个PWM发送到另一个PWM,但我没有收到。

抱歉,如果有任何错误(拼写错误)。

此致

安摩尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您不关心特定相位差异,那么这就像先启动一个计时器,然后再启动另一个计时器一样简单。 使用TxCTL寄存器清除计数器(TARCLR位)并选择模式控制(MC)。 图17-12至17-14显示了给定模式控制和输出模式(TAxCCTLn寄存器的OUTMOD位)的各种PWM输出。 TI在MSP产品页的“工具和软件”选项卡中提供了几个计时器示例。

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

    谢谢您先生,很抱歉您的回复太晚了。

    我能够将PWM的波形之一转换为CLK,另一个是PD/CONVST,我使用CLK作为另一个PWM的外部源,

    先生我正在从模式下使用MSP,我正在尝试 从ADC ADS 8363 EVM接收数据,我可以在范围内看到输出,但SPI每次读数为零, 但是 ,它以前一直读0xff,我猜这是NOP,但UCBUSY状态总是很高。即使在传输数据和接收之后。 我正在MODE0中使用它。我正在尝试使用它与ADC连接。请给出一些建议。请注意,我正在检查TX和UCRX中断标志。将数据写入缓冲区时。

    //************** INI代码**************************

    P3SEL || BIT3+BIT4;// WFP 3.3 ,4选项选择
    P2SEL || BIT7;// WFP 2.7 选项选择

    UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
    UCA0CTL0 |= UCSYNC+UCMSB;// 3引脚,8位SPI从属,在下降沿上捕获
    UCA0CTL0 &=~UCCMST;
    //时钟极性高,MSB
    UCA0CTL1 |= UCSSEL_2;// SMCLK
    UCA0BR0 = 0x08;///8
    UCA0BR1 = 0;//
    UCA0MCTL = 0;//无调制
    UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
    UCA0IE |= UCRXIE;//启用USI_A0 RX中断

    //************** 变速器代码**************************

    UCA0TXBUF = reg1;
    同时(!(UCA0IFG&UCTXIFG));
    同时(!(UCA0IFG&UCRXIFG));
    Data1 = UCA0RXBUF;

    请指出任何错误或建议。我正在尝试在调试模式下对其进行分析。

    此致,

    安摩尔  

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

    我对两个设备都作为从属设备驱动,模拟SPI时钟且没有活动主控制器的系统没有太多经验。 您是否使用有效的UCA0CLK为WFP喂2.7 ? 是否确定设备之间的SPI时钟极性和相位相同? 为什么要检查接收和传输IFG而不是UCBUSY位? 您能否提供SPI通信线路的示波器或逻辑分析仪屏幕截图?

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

    感谢先生的早日答复

    是的,我正在 用时钟喂食WFP 2.7 , 当我循环SOMI和SIMO引脚时,我正在获取传递的数据。这清除了时钟在范围内,我不确定SPI从属模式中的时钟范围。时钟极性和相位正常。我习惯使用RX TX BUF 中断标志我后来检查了UCBUSY位,当我在资源管理器中尝试示例程序时。由于我不需要但只是为了加载数据,我需要这些RX TX BUF。

    我正在附加一个示波器图像,参考:黄色:CLK;蓝色:RD/CONVST;绿色数据( MSP的数据)。

    EDIT1: 我在 一个函数中运行整个位加载(传输),我在无限循环中将其调用到main函数中,当我输入调用这些语句的函数时,我错误地将UCBUSY检查为获得0,但当我返回到时 主功能状态更改为1。这听起来很奇怪,我无法了解其原因。我在下面附加了一些卡扣:Th

     第二幅图像处于传输功能中。

    还有一件事我忘记了COE标志没有重置(在传输功能中连续设置)。即使在将RXBUF分配给变量后,我甚至进行了2次虚拟读取以检查它是否重置。我希望在这个问题中有这样的线索。

    如果有任何错误,请表示抱歉。

    此致

    安摩尔

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

    您好,我将模块更改为UCSIB0SPI,现在它工作正常,唯一的问题是我无法匹配ADC SDOx的起始点和SPI读取的起始点。我已经尝试过通过使用MSP SPI模块的STE来匹配这些模块,但未成功。您可以推荐它。

    此致  
    安摩尔  

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

    这是将两个设备都设置为从属设备所涉及的难题。 您可以尝试将ADS8363的RD线拉低,同时在SPI时钟周期内从复位(UCSWRST)释放USCI。 最大化MCU系统频率可能有助于补偿。

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

    你(们)好  

    正如我告诉您的那样,我正在使用另一个计时器来生成此RD脉冲,那么手动控制是不可能的,您能详细说明这句话。我无法完全获得。

    此致

    安摩尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当RD变低时,您可以使用计时器中断来操作,但您再次限制了有关计时的选项,因此在此设置中拥有主设备的重要性。

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

    你(们)好

    我试图处理中断,但却进入陷阱ISR默认处理程序,我正在使用CCR1的CCIFG检查在遇到此中断时是否生成Anotrer计时器波形。

    我已正确命名了矢量,并激活了“GIE”一般中断,但它仍然不工作。调试器到达时  

    __bis_sr_register(GIE);//输入LPM0,启用中断

    它将进入默认ISR。


    请 看这件事。我计划将TA2 CCR1 o/p作为STE授予SPI

    此致

    安摩尔

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

    您是在没有永久回路的情况下运行到主电源的末尾,还是进入低功率模式? 是否有任何除所示中断之外您启用的中断? 是否事先停止看门狗计时器? TA1IV中的TAIFG中断源为14,而不是10。 如果您不需要TIE,请勿设置它。

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

    您好,

    我正在无限循环中的某些SPI函数调用中运行此函数。

    看门狗计时器关闭。

    LPM0未激活(注释错误)。

    我想使用CCIFG1启动计时器。

    此致

    安摩尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    某些中断标志正在调用尚未初始化的ISR,因此必须将陷阱输入为警告。 从代码示例开始,确认它不会导致任何更改,然后开始进行您自己的更改,直到找到导致问题的外围设备。

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

    大家好,我已经检查了我是否启用了SPI RX TX BUF中断。我在调试模式中检查了,之后

    __bis_sr_register(LPM0_bits+GIE);//输入LPM0,启用interrup

    控制流立即流向ISR。
    是的,TAIV必须持续到14岁,但我必须使用"2",所以我认为这不是这种行为的原因。
    我还检查了带有中断的计时器的资源管理器代码,这些代码在它们完成main()之后也需要一些时间。
    此致
    安摩尔

    编辑:我得到了该中断工作,因为SPI TX RF BUF中断。

    但我仍然无法读取  ADC的SDOx。我尝试了一些方法,但仍然很远。

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

    我现在能够正确地读取数据,因为我使用了两个SPI模块,一个在主节点,另一个在从属模式,从外部循环时钟
    使用其中一个SDOx AS RD信号。任何SDI都可用于数据读取。我还映射了端口4以引入另一个模块,该模块将解决我的DAC问题接口,目前只面临与ADC正确性相关的问题。感谢您的帮助。

    此致,
    安摩尔