SPI时序问题,MOSI空闲设置,望大神指导

[复制链接]
7008|10
 楼主| 呆——呆 发表于 2014-9-18 16:52 | 显示全部楼层 |阅读模式
目前使用STM32L系列芯片调试美信AD芯片MAX1032,芯片为SPI接口,时序如图()所示,在MOSI空闲时候手册上为低电平,在第一个字节发送完成后,时钟信号上升沿到来,STM32 SPI配置模式CPOL=0,CPHA=0;但是问题在于CPHA=0的时候,MOSI发送空闲时候为高电平。
有尝试将MOSI与另一IO口进行连接,但是无法将其拉低,有没有大神做过,求指导
)@D`ZP%N0R@AR6XUS0J$MK7.jpg
飘呀叶子 发表于 2014-9-18 17:18 | 显示全部楼层
我的时钟始终都没信号,一直为高。你的IO和spi是如何配置的能发源码看看吗?谢了
 楼主| 呆——呆 发表于 2014-9-18 17:33 | 显示全部楼层
飘呀叶子 发表于 2014-9-18 17:18
我的时钟始终都没信号,一直为高。你的IO和spi是如何配置的能发源码看看吗?谢了 ...

        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
飘呀叶子 发表于 2014-9-18 18:07 | 显示全部楼层
你的片选是在NSS上的吗
mmuuss586 发表于 2014-9-18 19:27 | 显示全部楼层
飘呀叶子 发表于 2014-9-18 18:07
你的片选是在NSS上的吗

片选可以接任意IO,IO控制下电平好了;
mmuuss586 发表于 2014-9-18 19:30 | 显示全部楼层
看你上面的时序图;
在片选选中后,第一时钟来前,第一位数据已经有效了;
个人看法,用STM32不容易实现或者无法实现;
实在不行,软件模拟吧;
香水城 发表于 2014-9-19 15:57 | 显示全部楼层
CPHA和CPOL配置时钟空闲时电平状态和时钟的采样边沿。

根据LZ贴的美信AD的时序图,AD在上升沿读取数据,下降沿把数据打出来,对于MCU这个SPI主设备来说,配置成都是上升沿有效:上升沿把数据打出去,也是上升沿把数据读回来。

至于MOSI的空闲电平是高是低,有什么不同么?
 楼主| 呆——呆 发表于 2014-9-22 11:58 | 显示全部楼层
香水城 发表于 2014-9-19 15:57
CPHA和CPOL配置时钟空闲时电平状态和时钟的采样边沿。

根据LZ贴的美信AD的时序图,AD在上升沿读取数据,下 ...

感谢香主的回复,在AD芯片手册上有提到在In each conversion mode, the DIN bits must be driven low after the first byte.我理解的意思为单片机的SPI mosi输出脚在空闲时候需要拉低
 楼主| 呆——呆 发表于 2014-9-22 12:00 | 显示全部楼层
mmuuss586 发表于 2014-9-18 19:30
看你上面的时序图;
在片选选中后,第一时钟来前,第一位数据已经有效了;
个人看法,用STM32不容易实现或 ...

感谢版主,目前使用IO口模拟SPI接口程序已调通,但是速度达不到,最大采集速率只有20k左右
langziyexin 发表于 2015-5-6 20:00 | 显示全部楼层
大哥 加一下QQ呗 想问您一些问题 我的级别不够 不能给您留言。。。462421430@qq.com 我的QQ 麻烦您了
zh113214 发表于 2015-5-6 20:48 | 显示全部楼层
感谢版主,学习了,很受用,。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部