Exemple #1
0
void LCD_Send_Reg(uint8_t r)
{
	CHIP_SELECT();
	COMMAND_SELECT();
	MSPI_Write(r);
	CHIP_UNSELECT();
}
int MPU9250_SPIx_Write(u8 addr, u8 reg_addr, u8 data){
	CHIP_SELECT(pMPU9250);
	MPU9250_SPIx_SendByte(reg_addr);
	MPU9250_SPIx_SendByte(data);
	CHIP_DESELECT(pMPU9250);
	return 0;
}
void SPIx_DMA_Read_Regs(SPI_Driver* SPIx, uint8_t regAddr, uint8_t length, uint8_t* buffer)
{
	regAddr += 0xc0; //reading procedure has to set the most significant bit
	// Chip Select low 
	CHIP_SELECT(SPIx);
	
	// Send Register Address
	SPIx_SendByte(SPIx, regAddr);

	SPIx->DMA_RX_Stream->CR &= 0xFFFFFFFE;
	while(SPIx->DMA_RX_Stream->CR & 0x00000001);
	SPIx->DMA_RX->LIFCR |= 0x0F400000;
	SPIx->DMA_RX_Stream->NDTR = length;
	SPIx->DMA_RX_Stream->M0AR = (uint32_t)buffer;
	SPIx->DMA_RX_Stream->CR |= 1;

	//Dummy TX channel configuration
	SPIx->DMA_TX_Stream->CR &= 0xFFFFFFFE;
	while(SPIx->DMA_TX_Stream->CR & 0x00000001);
	SPIx->DMA_TX->HIFCR |= 0x0000003D;
	SPIx->DMA_TX_Stream->CR &= 0xFFFFFBFF;//DMA_SxCR_MINC
	SPIx->DMA_TX_Stream->NDTR = length;
	SPIx->DMA_TX_Stream->M0AR = (u32)(&DUMMY_BYTE);
	SPIx->DMA_TX_Stream->CR |= 1;
}
int MPU9250_SPIx_Writes(u8 addr, u8 reg_addr, u8 len, u8* data){
	u32 i = 0;
	CHIP_SELECT(pMPU9250);
	MPU9250_SPIx_SendByte(reg_addr);
	while(i < len){
		MPU9250_SPIx_SendByte(data[i++]);
	}
	CHIP_DESELECT(pMPU9250);
	return 0;
}
Exemple #5
0
void LCD_Send_Command_Bytes(const uint8_t *d,uint16_t len)
{
	CHIP_SELECT();
	COMMAND_SELECT();
	if (len == 1)
		MSPI_Write(*d);
	else if (len > 1)		
		MSPI_Write_Dma(d,NULL,len,SPIDMAINC_TxInc);
	CHIP_UNSELECT();
}
u8 MPU9250_SPIx_Read(u8 addr, u8 reg_addr)
{
	u8 dummy = 0;
	u8 data = 0;

	CHIP_SELECT(pMPU9250);
	MPU9250_SPIx_SendByte(0x80 | reg_addr);
	data = MPU9250_SPIx_SendByte(dummy);
	CHIP_DESELECT(pMPU9250);
	return data;
}
Exemple #7
0
void LCD_Send_Data(const uint8_t *d,uint16_t c,uint8_t inc)
{
	CHIP_SELECT();
	DATA_SELECT();
	if (c == 1)
		MSPI_Write(*d);
	else if (c > 1)
		MSPI_Write_Dma(d,NULL,c,(inc)? SPIDMAINC_TxInc: 0);
	//COMMAND_SELECT();
	CHIP_UNSELECT();
}
int MPU9250_SPIx_Reads(u8 addr, u8 reg_addr, u8 len, u8* data){
	u32 i = 0;
	u8 dummy = 0x00;

	CHIP_SELECT(pMPU9250);
	MPU9250_SPIx_SendByte(MPU9250_I2C_READ | reg_addr);
	while(i < len){
		data[i++] = MPU9250_SPIx_SendByte(dummy);
	}
	CHIP_DESELECT(pMPU9250);
	return 0;
}
void SPIx_Write_Reg(SPI_Driver* SPIx, uint8_t regAddr, uint8_t data) {

	// Chip Select low 
	CHIP_SELECT(SPIx);

	// Send Register Address
	SPIx_SendByte(SPIx, regAddr);
	// Write a byte
	SPIx_SendByte(SPIx, data);  

	// Chip Select high
	CHIP_DESELECT(SPIx);
}
void SPIx_ReadBytes(SPI_Driver* SPIx,uint8_t length, uint8_t* buffer)
{
  uint8_t i = 0;

  // Select Mems Sensor: Chip Select low 
	CHIP_SELECT(SPIx);
	
  while(i < length){
    // Read a byte from the MEMS Sensor
    buffer[i] = SPIx_SendByte(SPIx, DUMMY_BYTE);  
    i++;
  }
  // Deselect Mems Sensor: Chip Select high
  CHIP_DESELECT(SPIx);
}
uint8_t SPIx_Read_Reg(SPI_Driver* SPIx, uint8_t reg)
{
	uint8_t tmp;

	reg += 0x80; //reading procedure has to set the most significant bit
	// Chip Select low 
	CHIP_SELECT(SPIx);

	// Send Register Address
	SPIx_SendByte(SPIx, reg);
	// Read a byte
	tmp = SPIx_SendByte(SPIx, DUMMY_BYTE);  

	// Chip Select high
	CHIP_DESELECT(SPIx);

	return tmp;
}
void SPIx_Read_Regs(SPI_Driver* SPIx, uint8_t regAddr, uint8_t length, uint8_t* buffer)
{
	uint8_t i = 0;

	regAddr += 0xc0; //reading procedure has to set the most significant bit
	// Chip Select low 
	CHIP_SELECT(SPIx);

	// Send Register Address
	SPIx_SendByte(SPIx, regAddr);

	while(i < length){
		// Read a byte
		buffer[i] = SPIx_SendByte(SPIx, DUMMY_BYTE);  
		i++;
	}
	// Chip Select high
	CHIP_DESELECT(SPIx);
}