69 lines
1.2 KiB
C
69 lines
1.2 KiB
C
#include "sensor_spi.h"
|
|
#include <string.h>
|
|
|
|
static MISC_CTRL_TYPE * MISC_CTRL = ((MISC_CTRL_TYPE *) MISC_BASE);
|
|
|
|
void SPIBurstReadSetAddr(uint8_t len, uint8_t* paddr)
|
|
{
|
|
uint8_t i;
|
|
|
|
MISC_CTRL->SS_BURST_NUM = len;
|
|
|
|
for(i = 0; i < len; i++)
|
|
MISC_CTRL->SS_ADDR[i] = paddr[i];
|
|
}
|
|
|
|
void SPIBurstRead(uint8_t *pbuf, uint8_t len)
|
|
{
|
|
uint8_t i;
|
|
|
|
MISC_CTRL->SS_BURST_READ = 1;
|
|
|
|
while(MISC_CTRL->SS_BURST_READ==1);
|
|
|
|
for(i = 0; i < len; i++)
|
|
pbuf[i] = MISC_CTRL->SS_DATA[i];
|
|
}
|
|
|
|
void SPISingleWrite(uint8_t addr, uint8_t data)
|
|
{
|
|
uint8_t i;
|
|
|
|
MISC_CTRL->R_write_pol=R_WRIT_POL;
|
|
|
|
MISC_CTRL->SS_RDY_CLR = 1;
|
|
|
|
MISC_CTRL->SS_BUF[addr] = data;
|
|
|
|
while(1)
|
|
{
|
|
for(i=0; i< 10; i++)
|
|
__asm volatile (" NOP");
|
|
|
|
if(MISC_CTRL->SS_RDY == 1)
|
|
break;
|
|
}
|
|
}
|
|
|
|
void SPISingleRead(uint8_t addr, uint8_t *p_data)
|
|
{
|
|
uint8_t num_tmp = MISC_CTRL->SS_BURST_NUM;
|
|
uint8_t addr_tmp = MISC_CTRL->SS_ADDR[0];
|
|
|
|
MISC_CTRL->R_write_pol=R_WRIT_POL;
|
|
|
|
MISC_CTRL->SS_BURST_NUM = 0x01;
|
|
|
|
MISC_CTRL->SS_ADDR[0] = addr;
|
|
|
|
MISC_CTRL->SS_BURST_READ = 1;
|
|
|
|
while(MISC_CTRL->SS_BURST_READ==1);
|
|
|
|
*p_data = MISC_CTRL->SS_DATA[0];
|
|
|
|
MISC_CTRL->SS_BURST_NUM = num_tmp;
|
|
|
|
MISC_CTRL->SS_ADDR[0] = addr_tmp;
|
|
}
|