Technical information
CSI to SPI Peripheral Communication in V850ES Microcontrollers
CSI00_SetType3(); /* set CSI00 interface for Type 3
transfer */
TEMP2_CS_ON; /* select chip to enable
reading */
/* delay 400ns between CS true and SCK rise */
/* one NOP takes 50ns at 20MHz, so do eight */
__asm("nop"); __asm("nop");
__asm("nop"); __asm("nop");
__asm("nop"); __asm("nop");
__asm("nop"); __asm("nop");
CSI00_ReceiveData(rxbuf, 3); /* set up to receive three bytes (first
is dummy) */
txbuf[0] = 0x01; /* set address to read temperature
low byte */
CSI00_SendDone = MD_FALSE; /* set flag false - will be wset
true by INTCSI00 */
CSI00_SendData(txbuf, 3); /* transmit address to start
transfer (number to receive) */
while (CSI00_SendDone == MD_FALSE)
; /* wait for CSI transfer done */
TEMP2_CS_OFF; /* deselect chip to allow conversion to start again
*/
/* received data is now in rxbuf 1 and 2, with low byte, MSB first, in
rxbuf[1] */
/* and high byte in rxbuf[2] */
retval = (rxbuf[2] << 8) | rxbuf[1]; /* get 16-bit signed
temperature * 256 */
retval = retval / 2; /* scale down to
temperature * 128 for compatibility */
return (retval);
#endif
}
/* routine to delay for 500 msec */
void Temp_Delay_500ms(void)
{
SetMsecTimer(500); /* set timer for 500 milliseconds
*/
while (!CheckMsecTimer())
; /* wait for timer done */
}
/*
**---------------------------------------------------------------------------
--
** Abstract:
** Function to do display of temperature value
**
** Parameters:
** short temp - 16-bit signed temperature value (temperature * 128)
** Returns: None
50