[技术求助]

时序图操作问题

[复制链接]
830|13
手机看帖
扫描二维码
随时随地手机跟帖
qmmdzd|  楼主 | 2017-8-15 10:37 | 显示全部楼层 |阅读模式
各位坛友帮忙看下ADS8363这个时序图 ,选择CID=1的模式,busy不管,RD和CONVST绑在一起控制。用STM32的硬件SPI来控制的话,数据位选择16位(或者8位) 而这个时序图周期为20 CLOCK,怎么弄呢?
RD/CONVST又该如何才能配合SPI时钟呢?求各位帮忙解答


ADS8363时序图

ADS8363时序图

相关帖子

airwill| | 2017-8-15 12:34 | 显示全部楼层
你可以改变 SPI 数据位长度来适应它.

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-15 13:10 | 显示全部楼层
airwill 发表于 2017-8-15 12:34
你可以改变 SPI 数据位长度来适应它.

发送3个8位数据,舍掉没用的8位?可不可以这样做:前边的2个CLOCK不管,只控制RD/CONVST,然后SPI接收16位数据,后面的2个CLOCK也不管了

使用特权

评论回复
airwill| | 2017-8-15 13:33 | 显示全部楼层
嗯, 你这个办法应该可以试试, 一般通信中最后的位可以不管.

不过我记得, STM32 的 spi 数据位可以 4-16 任意设置. 对于 20 CLOCK, 你是不是也可以设置 10 bit 长数据长度?

使用特权

评论回复
airwill| | 2017-8-15 13:33 | 显示全部楼层
嗯, 你这个办法应该可以试试, 一般通信中最后的位可以不管.

不过我记得, STM32 的 spi 数据位可以 4-16 任意设置. 对于 20 CLOCK, 你是不是也可以设置 10 bit 长数据长度?

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-15 13:45 | 显示全部楼层
airwill 发表于 2017-8-15 13:33
嗯, 你这个办法应该可以试试, 一般通信中最后的位可以不管.

不过我记得, STM32 的 spi 数据位可以 4-16 任 ...

是的徐老师,有的STM32可以,我现在手头上单片机是F103系列,只能选8位或者16位

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-15 16:28 | 显示全部楼层
程序这样写有什么问题呢。。。。。。。

/*******************************************************************************
* Function Name  : SPI_ADC_SendHalfWord  发送数据
*******************************************************************************/
u16 SPI_ADC_SendHalfWord(u16 HalfWord)
{  
      SPI_ADC_RDCO_HIGH();
        __nop();__nop();       
        SPI_ADC_RDCO_LOW();
          __nop();__nop();
  /* Loop while DR register in not emplty */
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send Half Word through the SPI1 peripheral */
  SPI_I2S_SendData(SPI1, HalfWord);
/* Wait to receive a Half Word */
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
  /* Return the Half Word read from the SPI bus */
  return SPI_I2S_ReceiveData(SPI1);
       

}
void  ADC_Init()
{
        SPI_ADC_CS_LOW();      //CS置低
        Delay( 200 );
        SPI_ADC_SendHalfWord(0x1002);//选择ADC1
        Delay( 200 );
        SPI_ADC_SendHalfWord(0x03ff);//配置ADC1基准电压
        __nop();__nop();
        SPI_ADC_SendHalfWord(0x1005);//选择ADC2
        __nop();__nop();
        SPI_ADC_SendHalfWord(0x03ff);//配置ADC2基准电压
        __nop();__nop();
      SPI_ADC_SendHalfWord(0x1020);//更新整个寄存器
      Delay( 200 );

        //SPI_ADC_CS_HIGH();
}

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-16 11:10 | 显示全部楼层
求各位帮忙配置一下程序啊,必有感谢

使用特权

评论回复
smilingangel| | 2017-8-20 22:15 | 显示全部楼层
这个注意上下沿的触发问题。。

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-21 10:41 | 显示全部楼层
smilingangel 发表于 2017-8-20 22:15
这个注意上下沿的触发问题。。

那怎么做到两个沿同步呢?,比如说RD信号和CLOCK信号上升和下降沿同步。IO口电平操作有时间差

使用特权

评论回复
qmmdzd|  楼主 | 2017-8-29 14:18 | 显示全部楼层
各位都有什么高见呢?这个时序用STM32F103(SPI发送8位或者16位)怎么控制呢?CONVST\RD时序如何写

使用特权

评论回复
qmmdzd|  楼主 | 2017-9-2 10:00 | 显示全部楼层
顶一下 不要沉啊

使用特权

评论回复
一路向北lm| | 2017-9-2 12:25 | 显示全部楼层
STM32 的 spi 数据位可以 4-16 任意设置. 对于 20 CLOCK, 你是不是也可以设置 10 bit

使用特权

评论回复
qmmdzd|  楼主 | 2017-9-2 13:12 | 显示全部楼层
一路向北lm 发表于 2017-9-2 12:25
STM32 的 spi 数据位可以 4-16 任意设置. 对于 20 CLOCK, 你是不是也可以设置 10 bit

那RD/CONVST如何与CLOCK同步产生呢?

使用特权

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

本版积分规则

8

主题

93

帖子

0

粉丝