OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1156|回复: 7

XCOM与ADS1118芯片通信无响应

[复制链接]

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2022-10-12
在线时间
33 小时
发表于 2024-1-23 19:37:06 | 显示全部楼层 |阅读模式
用自己焊的板子,想采集ADS1118芯片数据,代码烧录好了,但是串口XCOM无法接收数据,像下面这张图一样,求助各位大佬
屏幕截图 2024-01-23 192925.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4417
金钱
4417
注册时间
2018-5-11
在线时间
922 小时
发表于 2024-1-23 22:21:24 | 显示全部楼层
谁知道你的软件是怎么编的?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2022-10-12
在线时间
33 小时
 楼主| 发表于 2024-1-24 13:06:25 | 显示全部楼层
warship 发表于 2024-1-23 22:21
谁知道你的软件是怎么编的?

void ADS1118_ADC_Init(uint16_t channel,uint16_t PGA,uint16_t SPS)
{
              MySPI_Init();
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);//拉低CS开始通信
        delay_us(5);
        MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Continuous_MODE|SPS|ADS1118_Temp_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据  初始化
        delay_us(10);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);//拉高CS停止通信
        delay_ms(1);
}

/*********************************************************************
*     ADS1118_Get_ADC_Continuous_Data
*     连续模式获取ADC数据,使用前初始化 ADS1118_ADC_Init()
*     单位V
*********************************************************************/

float  ADS1118_Get_ADC_Continuous_Data(uint16_t channel,uint16_t PGA,uint16_t SPS)
{
        uint16_t ADC_Data = 0;
        float Tempture_data= 0;
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);//拉低CS开始通信
        delay_us(1);
            
        while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6));//DOUT拉低ADS1118数据更新准备完毕
      
        ADC_Data = MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Continuous_MODE|SPS|ADS1118_ADC_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据
        delay_us(1);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);//拉高CS停止通信
if(ADC_Data&0X8000)//MSB=1
        {
                                ADC_Data = (~ADC_Data)+1 ;
                                if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;
                                else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;
                                else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;
                                else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;
                                else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;
                                else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;
                                else Tempture_data=ADC_Data*0.0078125;
                                return Tempture_data;

         }
        else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;
        else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;
        else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;
        else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;
        else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;
        else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;
        else Tempture_data=ADC_Data*0.0078125;
        return Tempture_data/1000;
}


void ads_print()
{
          float ads_value=0;
     ads_value=ADS1118_Get_ADC_Continuous_Data(ADS1118_MUX_AIN3,ADS1118_PGA_4096,ADS1118_DR_128SPS);
                printf("单通道AIN3采集电压%.3fV\r\n",ads_value);
          delay_ms(2000);       

}
这是我ADC芯片代码
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2022-10-12
在线时间
33 小时
 楼主| 发表于 2024-1-24 13:07:50 | 显示全部楼层
warship 发表于 2024-1-23 22:21
谁知道你的软件是怎么编的?

main代码就比较简单
int main(void)
{         
         float ads_value;
        delay_init();                     //延时函数初始化          
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口初始化为115200                
  MySPI_Init();
        ADS1118_ADC_Init(ADS1118_MUX_AIN3 ,ADS1118_PGA_4096,ADS1118_DR_128SPS);
        while(1)
        {
  ads_print();
        }
}
回复 支持 反对

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12691
金钱
12691
注册时间
2012-11-26
在线时间
3710 小时
发表于 2024-1-24 13:13:13 | 显示全部楼层
你这样问问题     神仙能帮你
学无止境
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2022-10-12
在线时间
33 小时
 楼主| 发表于 2024-1-24 14:41:26 | 显示全部楼层
本帖最后由 zzzhhhyyy 于 2024-1-24 14:50 编辑

代码也附上了
我的spi代码如下:void MySPI_Init(void)
{
         GPIO_InitTypeDef GPIO_InitStructure;
  SPI_InitTypeDef  SPI_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA, ENABLE);
        
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5|GPIO_Pin_7;//7  SPI_MOSI    5  SPI_SCLK
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;    //SPI_NSS
        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);//拉高CS
        
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;        //SPI_MISO
        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//主机模式
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;//十六位数据
        //
        SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_FullDuplex;//双线全双工
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial = 7;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
        SPI_Init(SPI1,&SPI_InitStructure);
        SPI_Cmd(SPI1,ENABLE);
        
        
}   



uint16_t MySPI_SwapByte(uint16_t ByteSend)
{

        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) != SET);

        SPI_I2S_SendData(SPI1, ByteSend);
        
        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) != SET);
        
        return SPI_I2S_ReceiveData(SPI1);
}



ADS1118.zip

7.44 MB, 下载次数: 1

回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4417
金钱
4417
注册时间
2018-5-11
在线时间
922 小时
发表于 2024-1-24 20:57:44 | 显示全部楼层
要学会定位问题,
首先是硬件的问题还是软件的问题
你说板子是你焊的,这个程序在好的板子(如原子的板子上)跑过吗?
为什么不先在开发板上跑一下呢?
如果硬件没有问题确定是软件的问题,
现在串口收不到数据,
为什么不试一下,先往串口送一下数据,先看看串口通道是不是好的呢?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2022-10-12
在线时间
33 小时
 楼主| 发表于 2024-1-25 12:09:39 | 显示全部楼层
warship 发表于 2024-1-24 20:57
要学会定位问题,
首先是硬件的问题还是软件的问题
你说板子是你焊的,这个程序在好的板子(如原子的板子 ...

谢谢老哥的建议,程序我在原子的板子上面跑过可以正常运行。我这没有交代清楚,后续我再去检查一下,感谢老哥!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表