Sonoma (MAXREFDES14#) Code Documentation  V01.00
Isolated EMP (Energy Measurement Processor)
 All Data Structures Files Functions Variables Macros Pages
utilities.c File Reference
#include "utilities.h"
#include "MAXREFDES14.h"

Go to the source code of this file.

Functions

void print_asterisks (int nQuantity)
 Print nQuantity of asterisks to the default Hyperterminal UART.
 
int SpiRW (u32 unPeripheralAddressSPI, unsigned int unCPHA, unsigned int unCPOL, u8 *auchWriteBuf, u8 *auchReadBuf, int unNumBytes, u8 uchCsActiveHigh)
 Perform a SPI read or write.
 
void delay (int nStopValue)
 Loop for nStopValue iterations to provide a delay.
 
void led_knight_rider (XGpio *pLED_GPIO, int nNumberOfTimes)
 Blink a row of LEDs nNumberOfTimes times.
 
void max_configure_PMOD_port (u8 uchPmodPortA, u8 uchPmodPortB, u8 uchPmodPortC, u8 uchPmodPortD)
 Configure driving peripherals on each Pmod port.
 
int check_if_i2c_device_is_present ()
 Test for SDA and SCL pullups.
 
int number_raised_to_power (int nBase, int nExponent)
 Raise nBase to the nExponent power (operates with integers only).
 
int receive_byte_with_timeout (u32 unUartAddress, int nTimeoutInTenthsOfSeconds, u8 *uchRxData)
 Receive a byte from the UART located at *pUartAddress.
 
int GetLine (char *sInputString, unsigned int unMaxSize)
 Retrieve a line of characters from the default Hyperterminal UART (DEFAULT_HYPERTERMINAL_UART).
 
void printf_temp (float fTemp, u8 uchPrintCelsius, u8 uchAddCarriageReturn)
 Print temperature as xx.x as degrees F or C.
 
u8 getUartByte (u32 nUartAddress)
 Get a byte from either the full UART in the Zynq PS, or a Xilinx UartLite.
 
int htoi (char *sStr)
 

Detailed Description


      Project: Maxim Plug-in Peripheral Modules
     Filename: utilities.c
  Description: This module contains a collection of general utility
               functions which are not specific to any particular
               module.

Revision History:
4-13-12 Rev 1.0 Seth Messimer Initial Release
7-20-12 Rev 1.4 Nathan Young Additional functions


This code follows the following naming conventions.

char chPmodValue char (array) sPmodString[16] float fPmodValue int nPmodValue int (array) anPmodValue[16] u16 uPmodValue u8 uchPmodValue u8 (array) auchPmodBuffer[16] unsigned int unPmodValue int * punPmodValue


Definition in file utilities.c.

Function Documentation

int check_if_i2c_device_is_present ( )

Test for SDA and SCL pullups.

Details
This function places the PMOD A port into GPIO mode briefly in order to sample the SDA and SCL lines If they are high, then this implies that a pull-up is present, and hence a PMOD board is likely present
Parameters
None
Return values
TRUEif pull-ups present, FALSE if pullups not present

Definition at line 261 of file utilities.c.

void delay ( int  nStopValue)

Loop for nStopValue iterations to provide a delay.

Details
It is commonly used with the constant 'ABOUT_ONE_SECOND' defined in maximPMOD.h for setting approximate delays
Parameters
[in]nStopValue- number of iterations to loop
Return values
None

Definition at line 165 of file utilities.c.

int GetLine ( char *  sInputString,
unsigned int  unMaxSize 
)

Retrieve a line of characters from the default Hyperterminal UART (DEFAULT_HYPERTERMINAL_UART).

Details
Maximum number of characters can be specified. Function will timeout after 10 seconds.
Parameters
[in]sInputString- pointer to buffer for input string
[in]unMaxSize- maximum number of characters to input
Return values
TRUEif operation succeeded

Definition at line 393 of file utilities.c.

u8 getUartByte ( u32  nUartAddress)

Get a byte from either the full UART in the Zynq PS, or a Xilinx UartLite.

Parameters
[in]unUartAddress.32 bit UART address
Return values
Returnsthe next byte from the Uart Rx FIFO

Definition at line 442 of file utilities.c.

int htoi ( char *  sStr)

Definition at line 457 of file utilities.c.

void led_knight_rider ( XGpio *  pLED_GPIO,
int  nNumberOfTimes 
)

Blink a row of LEDs nNumberOfTimes times.

Details
The Digilent NEXYS-3 board has 8 green LEDs located above the toggle switches. This function blinks them back/forth (a bit like the KITT car from Knight Rider)
Parameters
[in]*pLED_GPIO- address of the GPIO peripheral driving the LEDs in MicroBlaze memory map
Return values
None

Definition at line 186 of file utilities.c.

void max_configure_PMOD_port ( u8  uchPmodPortA,
u8  uchPmodPortB,
u8  uchPmodPortC,
u8  uchPmodPortD 
)

Configure driving peripherals on each Pmod port.

Details
The Maxim HDL hardware design for the Nexys 3 includes a multiplexer on each PMOD port to allow I2C, SPI, GPIO, and UART functionality to be selected on each port. The standard configuration is (PortA = I2C, PortB = SPI, PortC = GPIO, PortD = UART) This function is used to set the standard configuration in the main() function, as well as to optionally change the port config. The 2-bit number used to define the port configuration is encoded as follows:
00=UART, 01=SPI, 10=GPIO and 11=I2C
Parameters
[in]uchPmodPortA- 2-bit number to define configuration for Pmod port A
[in]uchPmodPortB- 2-bit number to define configuration for Pmod port B
[in]uchPmodPortC- 2-bit number to define configuration for Pmod port C
[in]uchPmodPortD- 2-bit number to define configuration for Pmod port D
Return values
TRUEif operation succeeded

Definition at line 221 of file utilities.c.

int number_raised_to_power ( int  nBase,
int  nExponent 
)

Raise nBase to the nExponent power (operates with integers only).

Details
Many Microblaze applications will not have math.h included due to limited memory space. This is a simple functions to implement (nBase ^ nExponent) Some Maxim devices (such as MAX44009) return values in mantissa + (power of 2) exponent format.
Parameters
[in]nBase- base
[in]nExponent- exponent
Return values
Base^Exponent

Definition at line 308 of file utilities.c.

void print_asterisks ( int  nQuantity)

Print nQuantity of asterisks to the default Hyperterminal UART.

Parameters
[in]nQuantity- number of asterisks to print
Return values
None

Definition at line 64 of file utilities.c.

void printf_temp ( float  fTemp,
u8  uchPrintCelsius,
u8  uchAddCarriageReturn 
)

Print temperature as xx.x as degrees F or C.

Details
This function prints the temperature with .1 degree resolution in either degrees
Celsius (uchPrintCelsius==TRUE) -or- Fahrenheit (uchPrintCelsius==FALSE)
Parameters
[in]fTemp- temperature to print in celsius
[in]uchPrintCelsius- true = print as celsius, false = print as fahrenheit
[in]uchAddCarriageReturn- true = add a carriage return
Return values
None

Definition at line 420 of file utilities.c.

int receive_byte_with_timeout ( u32  unUartAddress,
int  nTimeoutInTenthsOfSeconds,
u8 *  uchRxData 
)

Receive a byte from the UART located at *pUartAddress.

Parameters
[in]unUartAddress- address of the UART peripheral in MicroBlaze memory map
[in]nTimeoutInTenthsOfSeconds- amount of time to allow before TIMEOUT
[out]*uchRxData- received data is stored at uchRxData
Return values
TRUEif operation succeeded

Definition at line 337 of file utilities.c.

int SpiRW ( u32  unPeripheralAddressSPI,
unsigned int  unCPHA,
unsigned int  unCPOL,
u8 *  auchWriteBuf,
u8 *  auchReadBuf,
int  unNumBytes,
u8  uchCsActiveHigh 
)

Perform a SPI read or write.

Details
This function provides a combination SPI Read and Write to the chosen SPI port in the design CPHA and CPOL can be set to 0 or 1 Pointers are provided to u8 buffers containing the data to be written and received Data in the auchWriteBuf will be clocked out (MSB first) onto the MOSI pin Data from the MISO pin will be placed into the auchReadBuf uchCsActiveHigh==TRUE allows SS configurations to be used uchCsActiveHigh==FALSE allows SS# configurations to be used
Parameters
[in]unPeripheralAddressSPI-
[in]unCPHA- phase of SCK (edge to trigger on). 0=Leading edge, 1=Trailing edge
[in]unCPOL- polarity of SCK. 0=Active high, 1=Active low
[in]auchWriteBuf- pointer to write data buffer
[in]auchReadBuf- pointer to read data buffer
[in]unNumBytes- number of bytes to transfer
[in]uchCsActiveHigh- polarity of slave select 0=active low, 1=active high
Return values
Alwaysreturns 0

Definition at line 78 of file utilities.c.