这是ADS1282数据手册上的,那个Register mode(PIN=0)需要我们进行配置吗,是在哪里配置啊
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
貌似是不需要我们进行配置
我以前写的代码,给您参考下,希望对您有帮助。。
void ADS1248_LowLevel_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*!< ADS1248_SPI Periph clock enable */
/*!< ADS1248_SPI_SCL_GPIO_CLK, ADS1248_SPI_SDA_GPIO_CLK
and ADS1248_SPI_SMBUSALERT_GPIO_CLK Periph clock enable */
RCC_APB2PeriphClockCmd(ADS1248_SPI_CLK_GPIO_CLK | ADS1248_SPI_STR_GPIO_CLK | ADS1248_SPI_RDY_GPIO_CLK, ENABLE);
/*!< Configure ADS1248_SPI pins: CLK SDI */
GPIO_InitStructure.GPIO_Pin = ADS1248_SPI_CLK_PIN | ADS1248_SPI_SDI_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(ADS1248_SPI_CLK_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure ADS1248_SPI pins: SDO */
GPIO_InitStructure.GPIO_Pin = ADS1248_SPI_SDO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(ADS1248_SPI_SDO_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure ADS1248_SPI pins: START RESET */
GPIO_InitStructure.GPIO_Pin = ADS1248_SPI_STR_PIN | ADS1248_SPI_RET_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(ADS1248_SPI_STR_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure ADS1248_SPI pins: CS */
GPIO_InitStructure.GPIO_Pin = ADS1248_SPI_CS_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(ADS1248_SPI_CS_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure ADS1248_SPI pins: READY*/
GPIO_InitStructure.GPIO_Pin = ADS1248_SPI_RDY_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(ADS1248_SPI_RDY_GPIO_PORT, &GPIO_InitStructure);
}
void ADS1248_Init(void)
{
ADS1248_LowLevel_Init();
ADS1248_CS_H;
ADS1248_RET_H;
ADS1248_RET_L;
delay(5000000);
ADS1248_RET_H;
delay(5000000);
ADS1248_STR_L;
delay(DELAY_T);
ADS1248_STR_H;
}
/*******************************************************************************************************************
** 函数名称: void SPI_SendByte() Name: void SPI_SendByte()
** 功能描述: 通过SPI接口发送一个字节 Function: send a byte by SPI interface
** 输 入: INT8U byte: 发送的字节 Input: INT8U byte: the byte that will be send
** 输 出: 无 Output: NULL
** 说 明:
********************************************************************************************************************/
unsigned char SPI_SendByte(unsigned char byte)
{
unsigned char i,j;
j=0;
ADS1248_CS_L;
SPI_CLK_L;
delay(DELAY_T);
for(i=0;i<8;i++) //"发数据
{
SPI_CLK_H;
if(byte&0x80)SPI_SDI_H;
else SPI_SDI_L;
byte=byte<<1;
delay(DELAY_T);
j=j<<1;
if(GPIO_ReadInputDataBit(ADS1248_SPI_SDO_GPIO_PORT,ADS1248_SPI_SDO_PIN))j=(j|0x01); //"读数据
SPI_CLK_L;//
delay(DELAY_T);
}
//ADS1248_CS_H;
return j;
}
/*******************************************************************************************************************
** 函数名称: INT8U SPI_RecByte() Name: INT8U SPI_RecByte()
** 功能描述: 从SPI接口接收一个字节 Function: receive a byte from SPI interface
** 输 入: 无 Input: NULL
** 输 出: 收到的字节 Output: the byte that be received
********************************************************************************************************************/
unsigned char SPI_RecByte(void)
{
return SPI_SendByte(0XFF);
}ADS1248_Init();
//while(aabb)
//{
//
//
main()
{
ADS1248_Init();
SPI_SendByte(ADS1248_WREG|0X04);
SPI_SendByte(0X01);
SPI_SendByte(0XA3);
SPI_SendByte(ADS1248_RREG|0X04);
SPI_SendByte(0X01);
data_Buf[3] = SPI_RecByte();
}
我再P30也没有找到这段话。你的datasheet是TI网站上最新的datasheet吗?能不能附件发一份你用的datasheet?
ADS1282最新数据手册:http://www.ti.com.cn/cn/lit/ds/symlink/ads1282.pdf。
另外,25管脚确实是接地。请不要受到一些随意copy的回复的干扰。
你好:问一下你,你现在可以对ADS1282进行读寄存器操作吗?我在对ADS1282进行读寄存器时出现了问题,读出来的都是0x00.
你说的应该是读ADS1282的采集数据的过程,我现在只是在测试ADS1282是否正常工作(写读寄存器),但是我现在读出来的一直为0x00
你好:
ADS1282一上电是不是就已经转换数据了?还有先写个复位程序,然后就是等待(while循环),这时候DRDY是不是有变化啊?
你好!你的问题现在解决了吗?
我这边上电复位后,能正常读取寄存器的值.配置采样率,也能输出相应的脉冲数.如配1000SPS,只要读正常,就可产生1000SPS个脉冲.
问题在于.读取转换值时,一直为零.
不知道你是否会看回这帖子:
还是写下过程,给后来者一些帮助吧.
1:上电后,是连续读模式.所以配置任何寄存器,都是要先停止连续读.流程是;SDATAC->配置->RDATAC,
2:写REG时,第一个参数是COMM | REG,第二参数是要写入的长度 -1.比如以下图为例.意思是从CFC0开始,连续写6个data,并不是只写CFCO.
若只写一个DATA到REG,正确流程是 COMM|REG->0x00(length 1-1)->DATA
3:CLK上升沿时写入,也是CLK上升沿读取