RF430FRL153H: Controlling GPIO with ROM functions

Part Number: RF430FRL153H
Other Parts Discussed in Thread: RF430FRL152H, RF430FRL154H, RF430FRL152HEVM, MSP-EXP430G2, DLP-7970ABP, TRF7970A, MSP-FET

Hello,

I intend to use the RF430FRL153H for a project. I need to read an analog sensor and, after the reading, send an 1.5 V signal to reset the sensor.

So the sensor output pin would be connected to the ADC, and I would like to send the reset signal using a GPIO.

My question is whether I need a custom firmware for this or I could use the built-in ROM functions.

Thanks. 

  • Hello Delson,

    the functionality you need can not be implemented without custom firmware. This is not very complex. One way to implement this is to use the SensorHub Project from our sample code. Enable in the firmware in addition to the ADC0 also Digital Sensor1 and put the initialization code for the GPIO into DigitalSensorInit() and into the DigitalSensorMeasurement() subroutine put the code to control the GPIO for the reset of your sensor. Most of the code that handles the digital sensors from the SensorHub Project can be removed from these subroutines.

    For example:

    void DigitalSensorInit()
    {
    
        P1DIR |= BIT0;
        P1OUT &= ~BIT0;
    }
    
    
    u08_t DigitalSensorMeasurement ()
    {
    	u08_t sensor_sampled = 0;       // flag to keep track if any sensor was actually sampled
    
    	if (SENSOR_TYPE_MAILBOX == DIGITAL_SENSOR1) // does the ROM code request digital sensor 1 to be sampled?
    	{
    	    P1OUT |= BIT0;
    	    __delay_cycles(100);
    	    P1OUT &= ~BIT0;
    
    		sensor_sampled = 0;     // no sensor sampling was performed
    	}
    	else if(SENSOR_TYPE_MAILBOX == DIGITAL_SENSOR2) // does the ROM code request digital sensor 2 to be sampled?
    	{
            sensor_sampled = 0;     // no sensor sampling was performed
    	}
    	else if(SENSOR_TYPE_MAILBOX == DIGITAL_SENSOR3) // does the ROM code request digital sensor 3 to be sampled?
    	{
            sensor_sampled = 0;     // no sensor sampling was performed
        }
    
    	return sensor_sampled;			// if 1 indicates that a sensor read was performed, the ROM code will only store the value on a non-zero result here
    }

    Best Regards,

    Helfried

  • Hello Helfried,

    Thank you for your prompt response! I think this code will help me a lot.

    But I still have some additional questions:

    1) Just to confirm, is BIT0 = 0x01 ?

    2.1) Would this code work fine with RF430FRL153H despite the fact that it doesn't have serial interfaces (I2C, SPI) for digital sensors?

    2.2) According to the functionality I described, would you say that RF430FRL153H is really the best choice among the RF430FRL15xH devices?

    3) Is it possible for me to download the firmware into the chip using RF programming? If so, what would be the required hardware tools? (I'm currently using a PC with Windows 8 OS)

    Best regards.

  • Hello Delson,

    1. yes BIT0 = 0x01, in the file rf430frl152h.h are defines for every bit.

    2. You are right. Because I only have the EVM with RF430FRL152H it worked for me. After disabling the USCI support in the Firmware Control Register the digital sensors are no more supported. Seems the RF430FRL154H is the right choice in this case.

    3. Firmware can be downloaded by RF programming. The GUI for the RF430FRL152H EVM has this function implemented.

    For more information please see the EVM Users Guide:

    https://www.ti.com/lit/pdf/slau607

    Best Regards,

    Helfried

  • Hi Helfried,

    Thank you for your help!

    I would like to buy the RF430FRL152HEVM and implement my functionality (get a readout from an analog sensor connected to the ADC, send the data via NFC, and afterwards send a HIGH signal to reset the sensor) using RF programming. But I am a bit confused about the equipment required to do so. I couldn't find the MSP-EXP430G2 available for purchase, which is one of the required tools according to the document you provided. 

    Could you please help find the most suitable equipment for me to download the firmware into the EVM?

    Best Regards

  • Hi Delson,

    to use the GUI for the RF430FRL152HEVM you will need the TRF7970A reader which consists of the EXP430G2 Launchpad together with the DLP-7970ABP Booster Pack. The EXP430G2 is meanwhile obsolete but was replaced by the EXP430G2ET which is fully compatible. This should be available from most distributers.

    To load the firmware to the EXP430G2ET Launchpad the debug hardware with USB port is integrated on the board. The firmware for the RF430FRL152HEVM can be downloaded via RF, but I would recommend to buy in addition the MSP-FET which connects to the JTAG interface and can be used with the Code Composer Studio to download and debug your code.

    https://www.ti.com/tool/MSP-FET

    Best Regards,

    Helfried

  • Hi Helfried,

    Thank you for your help!

    I still have a question about the EVM: Will I be able to connect my own sensor to the ADC on this board? I ask this because the user's guide shows that ADC0, ADC1 and ADC2 are already connected to a thermistor and a light sensor. 

    Best Regards

  • Hi Delson,

    that's right, but there is the connector SV1 which is marked DNP and can be soldered to the board to get access to the ADC signals. The resistor R16 has to be removed.

    Best Regards

  • Hi Helfried,

    Let me check if I understood it properly. By removing R16, I would cut the connection between the light sensor and ADC0. So I would be able to connect my own sensor to ADC0 using pin 3 of the connector SV1. Is that right?

    Best Regards

  • Hi Delson,

    that is right. If you plan to use the GPIO P1.0 and the 1.5V signal level is sufficient for your sensor, you can connect it at the resistor R13.

    Best Regards

  • Hi Helfried,

    Thank you for all your help!

    Yes, the 1.5 V signal level is sufficient for my sensor, more specifically it requires a voltage level between 0.9V and 1.65V. I have two further questions about the connection you suggested:

    1) How exactly should I connect the sensor to R13? Must R13 be removed from the board?

    2) According to the block diagram shown in section 2.1 of the user's guide, P1.0 is connected to a level translator. Could this level translator bring me any trouble?

    Best Regards

  • Hi Delson,

    1) I recommended R13 as connection point for your reset signal to solder a wire to your sensor. The resistor is not needed for your application and can be removed to save power.

    2) As long as the 3.3V at the level translator is not supplied it will give you no trouble.

    Best Regards,

    Helfried

  • Hi Helfried,

    Thank you very much for your help! Your answers will be greatly valuable for my project.

    I also would like to know if I will be able to read sensor's data with the GUI even using the custom firmware.

    Best Regards,

    Delson

  • Hi Delson,

    you have to setup the virtual registers with the GUI, meaning enable the digital sensor and the ADC, then the GUI knows the configuration and the sensor data can be read out.

    Best Regards,

    Helfried

  • Hi Helfried,

    I still can't fully understand the reason why I have to enable the digital sensor if I want to sample just an analog sensor. Could you please explain it to me a bit further?

    Best Regards,

    Delson

  • Hi Delson,

    I will try to explain it. The RF430FRL152H ROM firmware works with a scheduler that handles the enables sensors. Your goal is to sample the analog sensor with the ADC, which can be fully handled by the ROM firmware when configured to your needs. After that you want send a digital reset signal to the sensor. For that I proposed to enable a digital sensor. Because digital sensors are specific to the customers needs the software part to handle these sensor must be written by the customer. When digital sensors are enabled the scheduler will also execute this specific code. The code for a digital sensor consists of two parts. One is the initialization of the sensor and the other is the measurement part. In your case it is very simple because the initialization part is just the setup of the port for your sensor reset signal and the measurement part is setting the reset signal for a defined time. When the digital sensor is enabled the initialization part will be executed at startup and then the scheduler will handle first your ADC analog measurement and after that the digital sensor which is in your case only the handling of the reset signal.

    Best Regards,

    Helfried

  • Hi Helfried,

    Thank you for your crystal-clear explanation!

    I believe that I understand it now. I have to implement a digital sensor driver (Init and Measurement functions) to trigger the port, in this case P1.0. Once the chip is powered, ROM scheduler will execute the initialization part, and wait for me to send an Write Single Block command to Block 0x02 (8-Byte block), setting the Gain, Digital Filter, Decimation Ratio and Virtual Ground. Then by sending a Write Single Block command to Block 0x00, I will select which sensors I would like to sample (I have to choose ADC0 and Digital Sensor 1) and set the Start Bit to start the sampling process. Finally I am able to read stored data from my sensor using Read Single Block commands sent to Block 0x09 (no data was logged from the digital sensor 1 measurement, because DigitalSensorMeausurement() returns 0).

    Could you please tell if what I described above is correct?

    Best Regards,

    Delson

  • Hi Delson,

    yes, what you have described is correct.

    Best Regards,

    Helfried

  • Hi Helfried,

    Thank you for your feedback!

    I think that I am ready to start writing code. I have downloaded SensorHub Project from TI's webpage and I have installed CCS 10.3.0 on my computer. But there is a lot of files in the folder (main.c, main.h, patch.c, types.h, etc) and I am not sure about which files I have to change to make everything work fine. 

    Could you please guide me through this process since this is the very first time I'm doing such a thing?

    Best Regards,

    Delson