DK-TM4C129X: Add logic to initialize the TMP-100 temperature sensor driver at startup

This commit is contained in:
Gregory Nutt 2015-01-06 13:23:02 -06:00
parent 383a47fb28
commit beaf4afdd4
4 changed files with 65 additions and 3 deletions

View File

@ -652,6 +652,8 @@ f Application Configuration -> Network Utilities
Temperature Sensor
==================
TMP-1000 Temperature Sensor Driver
----------------------------------
Support for the on-board TMP-100 temperature sensor is available. This
uses the driver for the compatible LM-75 part. To set up the temperature
sensor, add the following to the NuttX configuration file:
@ -663,8 +665,12 @@ Temperature Sensor
CONFIG_I2C=y
Drivers -> Sensors
CONFIG_LM75=y
CONFIG_I2C_LM75=y
Applications -> NSH Library
CONFIG_NSH_ARCHINIT=y
Then you can implement logic like the following to use the temperature sensor:
#include <nuttx/sensors/lm75.h>
@ -673,13 +679,35 @@ Temperature Sensor
ret = tiva_tmp100_initialize("/dev/temp"); /* Register the temperature sensor */
fd = open("/dev/temp", O_RDONLY); /* Open the temperature sensor device */
ret = ioctl(fd, SNIOC_FAHRENHEIT, 0); /* Select Fahrenheit */
bytesread = read(fd, buffer, 8*sizeof(b16_t)); /* Read temperature samples */
bytesread = read(fd, buffer, 8*sizeof(b16_t)); /* Read (8) temperature samples */
More complex temperature sensor operations are also available. See the IOCTL
commands enumerated in include/nuttx/sensors/lm75.h. Also read the descriptions
of the tiva_tmp100_initialize() and tiva_tmp100_attach() interfaces in the
arch/board/board.h file (sames as configs/dk-tm4c129x/include/board.h).
NSH Command Line Application
----------------------------
There is a tiny NSH command line application at examples/system/lm75 that
will read the current temperature from an LM75 compatible temperature sensor
and print the temperature on stdout in either units of degrees Fahrenheit or
Centigrade. This tiny command line application is enabled with the following
configuratin options:
Library
CONFIG_LIBM=y
CONFIG_LIBC_FLOATINGPOINT=y
Applications -> NSH Library
CONFIG_NSH_ARCHINIT=y
Applications -> System Add-Ons
CONFIG_SYSTEM_LM75=y
CONFIG_SYSTEM_LM75_DEVNAME="/dev/temp"
CONFIG_SYSTEM_LM75_FAHRENHEIT=y (or CENTIGRADE)
CONFIG_SYSTEM_LM75_STACKSIZE=1024
CONFIG_SYSTEM_LM75_PRIORITY=100
DK-TM4129X Configuration Options
================================
@ -868,3 +896,16 @@ Where <subdir> is one of the following:
network back up when the link becomes available again (for example,
if the cable is reconnected. The paragraph "Network Monitor" above
for additional information.
5. I2C6 and support for the on-board TMP-100 temperature sensor are
enabled. Also enabled is the NSH 'temp' command that will show the
current temperature on the command line like:
nsh> temp
80.60 degrees Fahrenheit
[80.6 F in January. I love living in Costa Rica1]
The default units is degrees Fahrenheit, but that is easily
reconfigured. See the discussin above in the paragraph entitled
"Temperature Sensor".

View File

@ -273,7 +273,7 @@ void tiva_setleds(uint8_t ledset);
*
************************************************************************************/
#if defined(CONFIG_I2C) && defined(CONFIG_I2C_LM75) && defined(CONFIG_STM32_I2C1)
#if defined(CONFIG_I2C) && defined(CONFIG_I2C_LM75) && defined(CONFIG_TIVA_I2C6)
int tiva_tmp100_initialize(FAR const char *devpath);
#endif

View File

@ -60,8 +60,10 @@ CSRCS += tm4c_nsh.c
endif
ifeq ($(CONFIG_I2C_LM75),y)
ifeq ($(CONFIG_TIVA_I2C6),y)
CSRCS += tm4c_tmp100.c
endif
endif
COBJS = $(CSRCS:.c=$(OBJEXT))

View File

@ -39,7 +39,9 @@
#include <nuttx/config.h>
#include <syslog.h>
#include <debug.h>
#include <arch/board/board.h>
#include "dk-tm4c129x.h"
@ -47,6 +49,11 @@
* Pre-Processor Definitions
****************************************************************************/
#ifdef CONFIG_SYSTEM_LM75_DEVNAME
# define TMP100_DEVNAME CONFIG_SYSTEM_LM75_DEVNAME
#else
# define TMP100_DEVNAME "/dev/temp"
#endif
/****************************************************************************
* Public Functions
@ -62,5 +69,17 @@
int tm4c_bringup(void)
{
#if defined(CONFIG_I2C) && defined(CONFIG_I2C_LM75) && defined(CONFIG_TIVA_I2C6)
int ret;
/* Initialize and register the TMP-100 Temperature Sensor driver. */
ret = tiva_tmp100_initialize(TMP100_DEVNAME);
if (ret < 0)
{
dbg("ERROR: Failed to initialize TMP100 driver: %d\n", ret);
}
#endif
return OK;
}