打印
[应用相关]

时序方面问题

[复制链接]
286|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2020-3-8 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

STM32L系列芯片调试美信AD芯片MAX1032,芯片为SPI接口,时序如图()所示,在MOSI空闲时候手册上为低电平,在第一个字节发送完成后,时钟信号上升沿到来,STM32 SPI配置模式CPOL=0,CPHA=0;但是问题在于CPHA=0的时候,MOSI发送空闲时候为高电平。
有尝试将MOSI与另一IO口进行连接,但是无法将其拉低,有没有大神做过,求指导

使用特权

评论回复
沙发
bqyj| | 2020-3-8 16:33 | 只看该作者
没遇到过,有图吗

使用特权

评论回复
板凳
zhuhuis| | 2020-3-8 16:36 | 只看该作者
你的IO和spi是如何配置的能发源码看看吗?

使用特权

评论回复
地板
tian111| | 2020-3-8 16:47 | 只看该作者
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

使用特权

评论回复
5
llljh| | 2020-3-8 16:52 | 只看该作者
你的片选是在NSS上的吗

使用特权

评论回复
6
chenho| | 2020-3-8 16:55 | 只看该作者
片选可以接任意IO,IO控制下电平好了;

使用特权

评论回复
7
jlyuan| | 2020-3-8 16:58 | 只看该作者

看你上面的时序图;
在片选选中后,第一时钟来前,第一位数据已经有效了;
个人看法,用STM32不容易实现或者无法实现;
实在不行,软件模拟吧;

使用特权

评论回复
8
huwr| | 2020-3-8 17:01 | 只看该作者
CPHA和CPOL配置时钟空闲时电平状态和时钟的采样边沿。

使用特权

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

使用特权

评论回复
10
zhuhuis| | 2020-3-8 17:14 | 只看该作者
MOSI的空闲电平是高是低,有什么不同么?

使用特权

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

使用特权

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

使用特权

评论回复
13
huanghuac| | 2020-3-8 17:23 | 只看该作者
有进步啊,呵呵

使用特权

评论回复
14
bqyj| | 2020-3-8 17:27 | 只看该作者
没看到图,感觉你是驱动没有写好造成的

使用特权

评论回复
15
yufe| | 2020-3-8 17:33 | 只看该作者
是不是寄存器配置的问题啊

使用特权

评论回复
16
langgq| | 2020-3-8 17:37 | 只看该作者
是的,只要片选才可以接IO,其他的接上也是没用的。

使用特权

评论回复
17
zhanglli| | 2020-3-8 17:40 | 只看该作者
还是寄存器配置问题

使用特权

评论回复
18
happy_10|  楼主 | 2020-3-8 17:44 | 只看该作者
嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

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

本版积分规则

744

主题

7973

帖子

6

粉丝