打印
[STM32F1]

时序问题

[复制链接]
876|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2016-1-27 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32L系列芯片调试美信AD芯片MAX1032,芯片为SPI接口,时序如图()所示,在MOSI空闲时候手册上为低电平,在第一个字节发送完成后,时钟信号上升沿到来,STM32 SPI配置模式CPOL=0,CPHA=0;但是问题在于CPHA=0的时候,MOSI发送空闲时候为高电平。
有尝试将MOSI与另一IO口进行连接,但是无法将其拉低,有没有大神做过,求指导
沙发
冰清玉洁| | 2016-1-27 19:10 | 只看该作者
本帖最后由 冰清玉洁 于 2016-1-27 19:11 编辑

没遇到过,有图吗

使用特权

评论回复
板凳
happy_10|  楼主 | 2016-1-27 19:11 | 只看该作者

使用特权

评论回复
地板
zhuhuis| | 2016-1-27 19:11 | 只看该作者
你的IO和spi是如何配置的能发源码看看吗?

使用特权

评论回复
5
tian111| | 2016-1-27 19:12 | 只看该作者
SPI_InitTypeDef SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

        // SPI2: NSS, SCK, MISO and MOSI òy??????
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);

        SPI_DeInit(SPI2);
        SPI_InitStructure.SPI_Direction         = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode              = SPI_Mode_Master;                //éè???÷SPI
        SPI_InitStructure.SPI_DataSize          = SPI_DataSize_16b;
        SPI_InitStructure.SPI_CPOL              = SPI_CPOL_Low;
        SPI_InitStructure.SPI_CPHA              = SPI_CPHA_2Edge;
        SPI_InitStructure.SPI_NSS               = SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
        SPI_InitStructure.SPI_FirstBit          = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial     = 7;
        SPI_Init(SPI2,&SPI_InitStructure);

        SPI_Cmd(SPI2, ENABLE);//ê1?üSPI2

使用特权

评论回复
6
宋倩2010| | 2016-1-27 19:12 | 只看该作者
你的片选是在NSS上的吗

使用特权

评论回复
7
chenho| | 2016-1-27 19:12 | 只看该作者
片选可以接任意IO,IO控制下电平好了;

使用特权

评论回复
8
gongche| | 2016-1-27 19:13 | 只看该作者
看你上面的时序图;
在片选选中后,第一时钟来前,第一位数据已经有效了;
个人看法,用STM32不容易实现或者无法实现;
实在不行,软件模拟吧;

使用特权

评论回复
9
huwr| | 2016-1-27 19:13 | 只看该作者
CPHA和CPOL配置时钟空闲时电平状态和时钟的采样边沿。

使用特权

评论回复
10
huanghuac| | 2016-1-27 19:13 | 只看该作者
根据LZ贴的美信AD的时序图,AD在上升沿读取数据,下降沿把数据打出来,对于MCU这个SPI主设备来说,配置成都是上升沿有效:上升沿把数据打出去,也是上升沿把数据读回来。

使用特权

评论回复
11
zhuhuis| | 2016-1-27 19:14 | 只看该作者
MOSI的空闲电平是高是低,有什么不同么?

使用特权

评论回复
12
happy_10|  楼主 | 2016-1-27 19:14 | 只看该作者
在AD芯片手册上有提到在In each conversion mode, the DIN bits must be driven low after the first byte.我理解的意思为单片机的SPI mosi输出脚在空闲时候需要拉低

使用特权

评论回复
13
happy_10|  楼主 | 2016-1-27 19:50 | 只看该作者
IO口模拟SPI接口程序已调通,但是速度达不到,最大采集速率只有20k左右

使用特权

评论回复
14
huanghuac| | 2016-1-27 19:51 | 只看该作者
有进步啊,呵呵

使用特权

评论回复
15
happy_10|  楼主 | 2016-1-27 19:51 | 只看该作者
嗯,明天再说吧,先结贴了

使用特权

评论回复
16
orangebanana| | 2016-1-29 15:09 | 只看该作者
没看到图,感觉你是驱动没有写好造成的

使用特权

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

本版积分规则

744

主题

7973

帖子

6

粉丝