資源簡介
為ADS1148驅動程序,其中包含TI測試代碼,可以直接使用
代碼片段和文件信息
#include?“bsp.h“
#define?GPIO_NUM_ADS1148_CS?????????????GPIO_NUM_P13
#define?GPIO_NUM_ADS1148_SCLK???????????GPIO_NUM_P35
#define?GPIO_NUM_ADS1148_MISO???????????GPIO_NUM_P33
#define?GPIO_NUM_ADS1148_MOSI???????????GPIO_NUM_P03
#define?GPIO_NUM_ADS1148_DRDY???????????GPIO_NUM_P04
#define?GPIO_NUM_ADS1148_START??????????GPIO_NUM_P56
#define?ADS1148_SPI_CS(data)????????????GPIO_OutData(GPIO_NUM_ADS1148_CS?data)
#define?ADS1148_SPI_SCLK(data)??????????GPIO_OutData(GPIO_NUM_ADS1148_SCLK?data)
#define?ADS1148_SPI_MOSI(data)??????????GPIO_OutData(GPIO_NUM_ADS1148_MOSI?data)
#define?ADS1148_SPI_MISO????????????????GPIO_GetIn(GPIO_NUM_ADS1148_MISO)
#define?ADS1148_START(data)?????????????GPIO_OutData(GPIO_NUM_ADS1148_START?data)
#define?ADS1148_DRDY_STATUS?????????????GPIO_GetIn(GPIO_NUM_ADS1148_DRDY)
#define?ADS1148_SAMPLE_MAX_TIMES????????6
enum?ADS1148_COMMAND
{
????ADS1148_CMD_WAKEUP??=?0x00
????ADS1148_CMD_SLEEP???=?0x02
????ADS1148_CMD_SYNC_1??=?0x04
????ADS1148_CMD_SYNC_2??=?0x05
????ADS1148_CMD_RESET???=?0x06
????ADS1148_CMD_NOP?????=?0xFF
????ADS1148_CMD_RDATA???=?0x12
????ADS1148_CMD_RDATAC??=?0x14
????ADS1148_CMD_SDATAC??=?0x16
????ADS1148_CMD_RREG????=?0x20
????ADS1148_CMD_WREG????=?0x40
????ADS1148_CMD_SYSOCAL?=?0x60
????ADS1148_CMD_SYSGCAL?=?0x61
????ADS1148_CMD_SELFCAL?=?0x62?
????ADS1148_CMD_Restrict?=?0xF1????//restricted?command?must?never?be?issued?to?the?device.
};
enum?ADS1148_REGISTER_ADDRESS
{
????ADS1148_REG_ADDR_MUX0?=?0x00
????ADS1148_REG_ADDR_VBIAS
????ADS1148_REG_ADDR_MUX1
????ADS1148_REG_ADDR_SYS0
????ADS1148_REG_ADDR_OFC0
????ADS1148_REG_ADDR_OFC1
????ADS1148_REG_ADDR_OFC2
????ADS1148_REG_ADDR_FSC0
????ADS1148_REG_ADDR_FSC1
????ADS1148_REG_ADDR_FSC2
????ADS1148_REG_ADDR_IDAC0
????ADS1148_REG_ADDR_IDAC1
????ADS1148_REG_ADDR_GPIOCFG
????ADS1148_REG_ADDR_GPIODIR?
????ADS1148_REG_ADDR_GPIODAT
};
void?ADS1148_Pin_Init()
{
????GPIO_SetOut(GPIO_NUM_ADS1148_CS?GPIO_Out1);
????GPIO_SetOut(GPIO_NUM_ADS1148_SCLK?GPIO_Out1);
????GPIO_SetOut(GPIO_NUM_ADS1148_MOSI?GPIO_Out1);
????GPIO_SetIn(GPIO_NUM_ADS1148_MISO);
????GPIO_SetIn(GPIO_NUM_ADS1148_DRDY);
????GPIO_SetOut(GPIO_NUM_ADS1148_START?GPIO_Out0);
}
UINT8?ADS1148_SendByte(UINT8?byte)
{
????UINT8?i?num?=?0;
??
????for(i=0;?i<8;?i++)
????{
???? num?<<=?1;
????????ADS1148_SPI_SCLK(1);
????????delay_2us(1);
???? if((byte?&?0x80)>>7)
???? {
????????????ADS1148_SPI_MOSI(1);
???? }
???? else
???? {
????????????ADS1148_SPI_MOSI(0);
???? }
????????
????????if(ADS1148_SPI_MISO)
???? {
???? num++;
???? }
????????ADS1148_SPI_SCLK(0);
????????delay_2us(1);
???? byte?<<=?1;
????}
????return?num;
}
UINT16?ADS1148_SendHalfWord(UINT16?byte)
{
????UINT16?num?=?0;
????UINT8?i;
????for(i=0;?i<16;?i++)
????{
????????num?<<=?1;
????????ADS1148_SPI_SCLK(1);
????????delay_2us(1);
????????if((byte?&?0x8000)>>15)
????????{
????????????ADS1148_SPI_
評論
共有 條評論