SLAU367P October 2012 – April 2020 MSP430FR5041 , MSP430FR5043 , MSP430FR50431 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5962 , MSP430FR5964 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5992 , MSP430FR5994 , MSP430FR59941 , MSP430FR6005 , MSP430FR6007 , MSP430FR6035 , MSP430FR6037 , MSP430FR60371 , MSP430FR6041 , MSP430FR6043 , MSP430FR60431 , MSP430FR6045 , MSP430FR6047 , MSP430FR60471 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
The output pulses consists of multiple phases: Pause, a software defined set of Extra_Excitation and Regular_Excitation phases, Stop, and Pause again. A state machine in PPG_A controls the flow. Set SAPH_AXPGCTL.XMOD = 3 like for trill tone generation. When the PPG_A is triggered, it leaves the Pause phase, generates extra excitation pulses with a frequency defined by SAPH_AXPGHPER/SAPH_AXPGLPER, then regular excitation pulses with a frequency defined by SAPH_APGHPER/SAPH_APGLPER. While XMOD = 3 the extra excitation pulses followed by the regular excitation pulses is repeated. Software is required to change the following:
SAPH_AXPGHPER, SAPH_AXPGLPER, SAPH_AXPGCTL.XPULS,
SAPHPGHPER, SAPHPGLPER, SAPHPGCTL.EPULS, SAPHPGCTL.SPULS,
in a well timed manner. This can be done by direct register access or by DMA accesses.
Finally setting SAPH_AXPGCTL.XMOD = 2 to terminates the multi tone. The last regular excitation pulses are followed by stop pulses. Then PPG_A goes to Pause phase again (see Figure 21-10 and Figure 21-9). The stop pulses have a 180° phase shift compared to the last regular excitation pulses. The stop pulses have same frequency as the last regular excitation pulses. The PPG generates up to 127 extra excitation pulses, up to 127 regular excitation pulses and up to 15 stop pulses, which are controlled by the SAPH_AXPGCTL.XPULS, SAPH_APGC.EPULS and SAPH_APGC.SPULS bits, respectively. The pulse polarity is programmable in the SAPH_APGC.PPOL bit. The signal polarity of Pause can be programmed to be logical high, logical low, or high impedance through the SAPH_APGC.PLEV and SAPH_APGC.PHIZ bits.
The PPG_A can be triggered by writing 1 to the SAPH_APPGTRIG.PPGTRIG bit when SAPH_APGCTL.TRSEL = 0 (register mode) or by the acquisition sequencer (ASQ) when SAPH_APGCTL.TRSEL = 1 (auto mode). To avoid unintended pulse outputs, keep SAPH_APGCTL.PPGEN = 0 while preparing the PPG_A registers. After the PPG_A registers are prepared, write 1 to the SAPH_APGCTL.PPGEN bit before triggering the PPG_A. The SAPH_APGCTL.PPGEN bit must be set before triggering the PPG_A. The output channel is determined by the SAPH_APGCTL.PPGCHSEL bit when SAPH_APGCTL.PGSEL = 0 (register mode) or by the acquisition sequencer (ASQ) when SAPH_APGCTL.PGSEL = 1 (auto mode). Another layer of output control is inside the PHY, so both blocks must be configured properly (see Section 21.3). After software sets XMOD = 2 by directly writing or using the DMA, the PPG_A automatically stops when it completes generating the pulses. Setting XMOD = 2 must be done when entering the last X-Pulse state. The current PPG_A state is indicated in SAPH_AXPGCTL.XSTAT Leave at least 6 CPU clocks time margin for synchronizing. To stop generating pulses before completion, regardless of operation mode, write 1 to SAPH_APGCTL.STOP. The PPG_A immediately stops generating pulses. The SAPH_APGCTL.STOP bit is automatically cleared to zero.