Esempio n. 1
0
void Chip_ADS1248_SelfOffsetCal(uint8_t chip)
{
	Chip_SSP_DATA_SETUP_T	xf_setup;
	
	xf_setup.length = BUFFER_SIZE;
	xf_setup.rx_cnt = 0;
	xf_setup.tx_cnt = 0;
	xf_setup.rx_data = rx_buf;
	xf_setup.tx_data = tx_buf;
	
	Chip_ADS1248_BufferInit();
	tx_buf[0] = SELFOCAL; 
	
	if(chip == CHIP_U1)
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL0);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	
	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL0);																		//Chip select High(1)
	}
	else
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL1);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	

		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL1);																		//Chip select High(1)
	}
		
	return;
}
Esempio n. 2
0
void Chip_ADS1248_WriteRegister(uint8_t chip, uint8_t address, uint8_t value)
{
	Chip_SSP_DATA_SETUP_T	xf_setup;
	
	xf_setup.length = BUFFER_SIZE;
	xf_setup.rx_cnt = 0;
	xf_setup.tx_cnt = 0;
	xf_setup.rx_data = rx_buf;
	xf_setup.tx_data = tx_buf;
	
	Chip_ADS1248_BufferInit();
	tx_buf[0] = (WREG | address);																											//Register address 0010 rrrr, 'r' being register address
	tx_buf[1] = 0;																																		//Num_of_bytes - 1
	tx_buf[2] = value;																																//Register value
	
	if(chip == CHIP_U1)
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL0);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	
	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL0);																		//Chip select High(1)
	}
	else
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL1);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	
	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL1);																		//Chip select High(1)
	}
		
	return;
}
Esempio n. 3
0
uint8_t Chip_ADS1248_ReadRegister(uint8_t chip, uint8_t address)
{
	Chip_SSP_DATA_SETUP_T	xf_setup;
	
	xf_setup.length = BUFFER_SIZE;
	xf_setup.rx_cnt = 0;
	xf_setup.tx_cnt = 0;
	xf_setup.rx_data = rx_buf;
	xf_setup.tx_data = tx_buf;
	
	Chip_ADS1248_BufferInit();
	tx_buf[0] = (RREG | address);																											//Register address 0010 rrrr, 'r' being register address
	tx_buf[1] = 0;																																		//Num_of_bytes - 1
	
	if(chip == CHIP_U1)
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL0);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	
	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL0);																		//Chip select High(1)
	}
	else
	{
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL1);																		  //Chip select Low(0)
		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);	
	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL1);																		//Chip select High(1)
	}
		
	return rx_buf[2];																																	//during transmission 2 rcv. bytes are junk, third is the reg. value
}
Esempio n. 4
0
void spi_transceive(uint8_t tx_len, uint8_t rx_len) {
    // Setup params for sending
    xf_setup.rx_cnt = 0;
    xf_setup.tx_cnt = 0;
    xf_setup.length = tx_len + rx_len;

    // Send
    Chip_SSP_RWFrames_Blocking(spi_id, &xf_setup);
}
Esempio n. 5
0
void writeToSPI(int length) {
	spi.length = length;
	spi.rx_cnt = 0;
	spi.tx_cnt = 0;

	Chip_GPIO_SetPinOutLow(LPC_GPIO, CSN_PORT, CSN_PIN);
	Chip_SSP_RWFrames_Blocking(LPC_SSP1, &spi);
	Chip_GPIO_SetPinOutHigh(LPC_GPIO, CSN_PORT, CSN_PIN);
}
Esempio n. 6
0
uint32_t Board_SSP_transfer(uint8_t *bufferTx, uint8_t *bufferRx, uint32_t bufferLen)
{
	Chip_SSP_DATA_SETUP_T spiSetup;
	spiSetup.tx_data = bufferTx;
	spiSetup.rx_data = bufferRx;
	spiSetup.tx_cnt=0;
	spiSetup.rx_cnt=0;
	spiSetup.length=bufferLen;

	return Chip_SSP_RWFrames_Blocking(LPC_SSP1, &spiSetup);
}
void wr_com16(uint8_t hexa1,uint8_t hexa2)
{

	port_pin(4,9, disable, low);//cs=0
	port_pin(4,10, disable, high);//dc=1
	xf_setup.length = sizeof(hexa1);
	xf_setup.rx_data = Rx_Buf;
	xf_setup.rx_cnt = xf_setup.tx_cnt = 0;
	xf_setup.tx_data = hexa1;
	Chip_SSP_RWFrames_Blocking(LPC_SSP, &xf_setup);

	port_pin(4,9, disable, high);//cs=0
    port_pin(4,9, disable, low);//cs=1
	port_pin(4,10, disable, high);//dc=1

	xf_setup.length = sizeof(hexa2);
    xf_setup.rx_data = Rx_Buf;
	xf_setup.rx_cnt = xf_setup.tx_cnt = 0;
	xf_setup.tx_data= hexa2;
	Chip_SSP_RWFrames_Blocking(LPC_SSP, &xf_setup);
    port_pin(4,9, disable, high);//cs=1
}
void  write_command(uint8_t hexa)
{
	port_pin(4,9, disable, low);//cs=0
	port_pin(4,10, disable, low);//dc=0
    xf_setup.length = sizeof(hexa);
	xf_setup.rx_data = Rx_Buf;
    xf_setup.rx_cnt = xf_setup.tx_cnt = 0;
    xf_setup.tx_data= hexa;
    Chip_SSP_Enable(LPC_SSP);
    Chip_SSP_RWFrames_Blocking(LPC_SSP, &xf_setup);
    port_pin(4,9, disable, high);//cs=1

}
Esempio n. 9
0
uint8_t SPI_ReadWrite( uint8_t p)
{
    uint8_t rxBuf;
	Chip_SSP_DATA_SETUP_T data;

	Chip_GPIO_SetPinOutLow(LPC_GPIO, TOUCH_E);

	data.rx_data=&rxBuf;
	data.tx_data=&p;

	data.length=1;
	data.rx_cnt = 0;
	data.tx_cnt = 0;
	Chip_SSP_RWFrames_Blocking(LPC_SSP0,&data);

	//Chip_GPIO_SetPinOutHigh(LPC_GPIO,TOUCH_E);

	return rxBuf;
}
Esempio n. 10
0
void ssp_write_read( uint8_t id, uint8_t *tx_buf, uint32_t tx_len, uint8_t *rx_buf, uint32_t rx_len, uint32_t timeout )
{
    Chip_SSP_DATA_SETUP_T * data_st = &ssp_cfg[id].xf_setup;

    tx_ssp = pvPortMalloc(tx_len);
    rx_ssp = pvPortMalloc(rx_len+tx_len);

    memcpy(tx_ssp, tx_buf, tx_len);

    ssp_cfg[id].caller_task = xTaskGetCurrentTaskHandle();
    data_st->tx_cnt = 0;
    data_st->rx_cnt = 0;
    data_st->tx_data = tx_ssp;
    data_st->rx_data = rx_ssp;
    data_st->length = rx_len+tx_len;

    /* Assert Slave Select pin to enable the transfer */
    ssp_ssel_control(id, ASSERT);

    if (ssp_cfg[id].polling) {
        Chip_SSP_RWFrames_Blocking(ssp_cfg[id].lpc_id, data_st);
	ssp_ssel_control(id, DEASSERT);
    } else {
        Chip_SSP_Int_FlushData(ssp_cfg[id].lpc_id);

        /* Enable interrupt-based data transmission */
        Chip_SSP_Int_Enable( ssp_cfg[id].lpc_id );

        /* User defined timeout ? */
        /* Wait until the transfer is finished */
        ulTaskNotifyTake(pdTRUE, timeout);
    }
    if (rx_buf && rx_len > 0) {
        memcpy(rx_buf, rx_ssp, rx_len+tx_len);
    }
    vPortFree(rx_ssp);
    vPortFree(tx_ssp);
}
Esempio n. 11
0
/* Select the Transfer mode : Polling, Interrupt or DMA */
static void appSSPTest(void)
{
	int key;

	DEBUGOUT(sspTransferModeSel);

	dmaChSSPTx = Chip_GPDMA_GetFreeChannel(LPC_GPDMA, LPC_GPDMA_SSP_TX);
	dmaChSSPRx = Chip_GPDMA_GetFreeChannel(LPC_GPDMA, LPC_GPDMA_SSP_RX);

	xf_setup.length = BUFFER_SIZE;
	xf_setup.tx_data = Tx_Buf;
	xf_setup.rx_data = Rx_Buf;

	while (1) {
		key = 0xFF;
		do {
			key = DEBUGIN();
		} while ((key & 0xFF) == 0xFF);

		Buffer_Init();

		switch (key) {
		case SSP_POLLING_SEL:	/* SSP Polling Read Write Mode */
			DEBUGOUT(sspWaitingMenu);
			xf_setup.rx_cnt = xf_setup.tx_cnt = 0;

			Chip_SSP_RWFrames_Blocking(LPC_SSP, &xf_setup);

			if (Buffer_Verify() == 0) {
				DEBUGOUT(sspPassedMenu);
			}
			else {
				DEBUGOUT(sspFailedMenu);
			}
			break;

		case SSP_INTERRUPT_SEL:
			DEBUGOUT(sspIntWaitingMenu);

			isXferCompleted = 0;
			xf_setup.rx_cnt = xf_setup.tx_cnt = 0;

			Chip_SSP_Int_FlushData(LPC_SSP);/* flush dummy data from SSP FiFO */
			if (SSP_DATA_BYTES(ssp_format.bits) == 1) {
				Chip_SSP_Int_RWFrames8Bits(LPC_SSP, &xf_setup);
			}
			else {
				Chip_SSP_Int_RWFrames16Bits(LPC_SSP, &xf_setup);
			}

			Chip_SSP_Int_Enable(LPC_SSP);	/* enable interrupt */
			while (!isXferCompleted) {}

			if (Buffer_Verify() == 0) {
				DEBUGOUT(sspPassedMenu);
			}
			else {
				DEBUGOUT(sspFailedMenu);
			}
			break;

		case SSP_DMA_SEL:	/* SSP DMA Read and Write: fixed on 8bits */
			DEBUGOUT(sspDMAWaitingMenu);
			isDmaTxfCompleted = isDmaRxfCompleted = 0;
			Chip_SSP_DMA_Enable(LPC_SSP);
			/* data Tx_Buf --> SSP */
			Chip_GPDMA_Transfer(LPC_GPDMA, dmaChSSPTx,
							  (uint32_t) &Tx_Buf[0],
							  LPC_GPDMA_SSP_TX,
							  GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA,
							  BUFFER_SIZE);
			/* data SSP --> Rx_Buf */
			Chip_GPDMA_Transfer(LPC_GPDMA, dmaChSSPRx,
							  LPC_GPDMA_SSP_RX,
							  (uint32_t) &Rx_Buf[0],
							  GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA,
							  BUFFER_SIZE);

			while (!isDmaTxfCompleted || !isDmaRxfCompleted) {}
			if (Buffer_Verify() == 0) {
				DEBUGOUT(sspPassedMenu);
			}
			else {
				DEBUGOUT(sspFailedMenu);
			}
			Chip_SSP_DMA_Disable(LPC_SSP);
			break;

		case 'q':
		case 'Q':
			Chip_GPDMA_Stop(LPC_GPDMA, dmaChSSPTx);
			Chip_GPDMA_Stop(LPC_GPDMA, dmaChSSPRx);
			return;

		default:
			break;
		}

		DEBUGOUT(sspTransferModeSel);
	}

}
Esempio n. 12
0
int32_t Chip_ADS1248_GetTemperature(uint8_t chip, uint8_t rtd)
{
	uint32_t temperatura_raw = 0;
	int32_t temperatura = 0;
	Chip_SSP_DATA_SETUP_T	xf_setup;
	
	if(chip == CHIP_U1)
	{	
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_START0);
		temperatura_raw = Chip_ADS1248_ReadRegister(CHIP_U1, MUX0);
		
		if(rtd == RTD_1)
		{
			Chip_ADS1248_WriteRegister(chip, MUX0, 0x01);
			Chip_ADS1248_WriteRegister(chip, IDAC1, 0x8F);
		}
		else
		{
			Chip_ADS1248_WriteRegister(chip, MUX0, 0x13);
			Chip_ADS1248_WriteRegister(chip, IDAC1, 0x9F);
		}
		
		temperatura_raw = Chip_ADS1248_ReadRegister(CHIP_U1, MUX0);
		temperatura_raw = Chip_ADS1248_ReadRegister(CHIP_U1, IDAC1);
		
		Chip_ADS1248_BufferInit();		
		
		xf_setup.length = BUFFER_SIZE;
		xf_setup.rx_cnt = 0;
		xf_setup.tx_cnt = 0;
		xf_setup.rx_data = rx_buf;
		xf_setup.tx_data = tx_buf;
		tx_buf[0] = RDATA;	
		
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_START0);	
		
		NVIC_EnableIRQ(PIN_INT0_IRQn);			
		
		osSignalWait(0x0004, osWaitForever);
		
		NVIC_DisableIRQ(PIN_INT0_IRQn);
		
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL0);																		  //Chip select Low(0)		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);		
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL0);																		//Chip select High(1)		
	}
	else
	{
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_START1);
		
		if(rtd == RTD_3)
		{
			Chip_ADS1248_WriteRegister(chip, MUX0, 0x01);
			Chip_ADS1248_WriteRegister(chip, IDAC1, 0x8F);
		}
		else
		{
			Chip_ADS1248_WriteRegister(chip, MUX0, 0x13);
			Chip_ADS1248_WriteRegister(chip, IDAC1, 0x9F);
		}
					
		Chip_ADS1248_BufferInit();		
		
		xf_setup.length = BUFFER_SIZE;
		xf_setup.rx_cnt = 0;
		xf_setup.tx_cnt = 0;
		xf_setup.rx_data = rx_buf;
		xf_setup.tx_data = tx_buf;
		tx_buf[0] = RDATA;	
				
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_START1);	

		NVIC_EnableIRQ(PIN_INT1_IRQn);		
		
		osSignalWait(0x0005, osWaitForever);
		
		NVIC_DisableIRQ(PIN_INT1_IRQn);
		
		Chip_GPIO_SetPinOutLow(LPC_GPIO, ADS_nSSEL1);																		  //Chip select Low(0)		
		Chip_SSP_RWFrames_Blocking(ADS_SSP, &xf_setup);		
		Chip_GPIO_SetPinOutHigh(LPC_GPIO, ADS_nSSEL1);
	}
	
	
	temperatura_raw = ((rx_buf[1] << 16) & 0x00ff0000) | 
								((rx_buf[2] << 8) & 0x0000ff00) | 
								(rx_buf[3] & 0xff);

	temperatura = GetTemperature(temperatura_raw);	
	
	return temperatura;
}