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; }
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; }
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); }