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.

Pulse oximetry using MSP430FG437

Other Parts Discussed in Thread: MSP430FG437

Hi , I want to use the code and schematic that TI offers to make a  Pulse Oximetry by MSP430FG437.

Now I can see the visible red light on the sensor and see the right IR Heart signal.

But I have two questions now.

1. The value of "heart_rate_LSB" and " SaO2_LSB" is always 0X00 , which I think it would change every 2ms with IR heart signal. 

     

        TXBUF0 = 0x00;                   // Byte 1 - 0x00 (synchronization byte)
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0xFF; // Byte 2 - 0xFF (synchronization byte)
while (!(IFG1 & UTXIFG0));
TXBUF0 = i; // Byte 3 - IR Heart signal (AC only)
while (!(IFG1 & UTXIFG0));
TXBUF0 = heart_rate_LSB; // Byte 4 - Heart rate data
while (!(IFG1 & UTXIFG0));
TXBUF0 = SaO2_LSB; // Byte 5 - %SaO2 data
 
2. If I include the "mul.s43" to implement " int32_t mul16(register int16_t x, register int16_t y);" , the signal would be different 
when I use
long mul16(short x, short y)
{
return ((long)x) * y;
}
to define this function.However, the output signal of later one is right.
I want to know why and should I use the "mul.s43" to define " int32_t mul16"?
Hope for your reply for these two questions.
Best regards,
Steve.

**Attention** This is a public forum