打印
[信息]

ADS1256用cubeMX生成项目,用SPI2读出数据错误?

[复制链接]
1209|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2021-5-20 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
已软件模拟,一切正常。
//ADS1256读寄存器
u8 ADS1256_Read_Reg(u8 reg)
{
  u8 status;
  while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)){;}//wait ready
  reg=reg|0x10;
        ADS1256_Write_Bits(reg);      
  ADS1256_Write_Bits(0x0);
        delayus(10);        //????? T6 时间调整6.5us
        status=ADS1256_Read_Bits();      
        return status;      
}
//ADS1256读寄存器
void ADS1256_Write_Reg( u8 reg, u8 senddata)
{
  while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)){;}//wait ready
        reg=reg|0x50;
        ADS1256_Write_Bits(reg);      
  ADS1256_Write_Bits(0x0);
        ADS1256_Write_Bits(senddata);      
}

HAL库
uint8_t ADS1256_Read_Reg(uint8_t reg)
{
  uint8_t status=0xff;
        uint8_t databuffer[2];
  while(ADS1256_Read_Ready){;}//wait ready
  reg=reg|0x10;
        databuffer[0]=reg;databuffer[1]=0;
        if(HAL_SPI_Transmit(&hspi2,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();}
        if(HAL_SPI_Transmit(&hspi2,&databuffer[1],1,1000)!=HAL_OK) {Error_Handler();}
        delayus(20);        //????? T6 时间调整6.5us
        if(HAL_SPI_TransmitReceive(&hspi2,&status,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();}
        return databuffer[0];      
}
//ADS1256写寄存器
void ADS1256_Write_Reg( uint8_t reg, uint8_t senddata)
{
  uint8_t databuffer[3];
  while(ADS1256_Read_Ready){;}//wait ready
        reg=reg|0x50;
        databuffer[0]=reg;databuffer[1]=0;databuffer[2]=senddata;
        if(HAL_SPI_Transmit(&hspi2,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();}      
        if(HAL_SPI_Transmit(&hspi2,&databuffer[1],1,1000)!=HAL_OK) {Error_Handler();}      
        if(HAL_SPI_Transmit(&hspi2,&databuffer[2],1,1000)!=HAL_OK) {Error_Handler();}      
}

HAL库测试
//ADS1256_Init();
        ADS1256_Write_CS_L;      
        delayms(100);      
      
        ADS1256_Write_Reg(0x01,0x01);//状态寄存器初始化
        delayus(20);
        rbuffer[0]=0;
        rbuffer[0]=ADS1256_Read_Reg(0x01);//模拟多路选择器初始化
        delayus(20);

向01寄存器写入1,再读出,数据不对
配置
hspi2.Instance = SPI2;
  hspi2.Init.Mode = SPI_MODE_MASTER;
  hspi2.Init.Direction = SPI_DIRECTION_2LINES;
  hspi2.Init.DataSize = SPI_DATASIZE_8Bit;
  hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi2.Init.NSS = SPI_NSS_SOFT;
  hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi2.Init.CRCPolynomial = 10;
  if (HAL_SPI_Init(&hspi2) != HAL_OK)
  {
    Error_Handler();
  }

使用特权

评论回复
沙发
銀河| | 2022-12-24 14:52 | 只看该作者
数据读出是错的?

使用特权

评论回复
板凳
风吻过你的不羁| | 2022-12-24 15:24 | 只看该作者
你用cubemx生成的SPI,肯定是硬件spi啊,应该通讯是没问题的

使用特权

评论回复
地板
极客晨星| | 2022-12-24 15:56 | 只看该作者
你这个ADS1256是啥?ADC么?

使用特权

评论回复
5
晚晚皆安| | 2022-12-24 16:28 | 只看该作者
话说,是不是你初始化配置的时候有的问题啊

使用特权

评论回复
6
热爱童话世界| | 2022-12-24 17:00 | 只看该作者
你说的数据错误是指?指的是收到的数据是不对的?

使用特权

评论回复
7
地下縱情搖擺| | 2022-12-24 17:32 | 只看该作者
你用逻辑分析仪抓一下呗,看看数据收发波形都OK不

使用特权

评论回复
8
討厭和人归類| | 2022-12-24 18:04 | 只看该作者
按理来说,你通信都行,为啥数据能错误呢?

使用特权

评论回复
9
占得人间第一春| | 2022-12-24 18:36 | 只看该作者
数据错误大概都是时序不对,看看你把SPI的速度降下来点试试?

使用特权

评论回复
10
情和欲| | 2022-12-24 19:08 | 只看该作者
用软件模拟正常,用硬件SPI数据异常是么?

使用特权

评论回复
11
笨蛋无需搭理| | 2022-12-24 19:40 | 只看该作者
正常不应该这样,SPICUBEMX配置的话,应该不会这样才对,毕竟配置肯定是OK的。你是不是修改啥了啊?

使用特权

评论回复
12
SantaBunny| | 2023-2-19 22:47 | 只看该作者
大部分是硬件的问题,外接的芯片的连接线,电源等

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

653

主题

2710

帖子

0

粉丝