打印

STM32 spi 复位,导致管脚有变化,求助香水城

[复制链接]
5229|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pentral0311|  楼主 | 2012-2-15 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在调试的时候,无疑中捕捉到SPI 复位 SPI_Cmd(SPI2,DISABLE)的时候,会导致外设的GPIO脚会生产一个电平变化,望香水城赐教!!!
沙发
香水城| | 2012-2-15 16:01 | 只看该作者
哪个GPIO脚?什么外设?  当时SPI信号线上是什么波形?

使用特权

评论回复
板凳
baidudz| | 2012-2-15 20:40 | 只看该作者
LZ问题描述的不够清楚

使用特权

评论回复
地板
pentral0311|  楼主 | 2012-2-24 09:48 | 只看该作者
GPIOB SPI2 接的是ATT7022E 出现一个三角波 ,幅值只有正常电平的1/3左右,因为贴不了图,只能发文字了

使用特权

评论回复
5
pentral0311|  楼主 | 2012-2-24 09:56 | 只看该作者
/**********************************************************************
程序名: BSP_PA1_38KHZ_Init
输入: 无
输出: 无
返回: 无
说明:PA1产生38K的PWM脉冲, 用于红外载波
**********************************************************************/
void BSP_PA1_38KHZ_Init()
{
TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
TIM_OCInitTypeDef           TIM_OCInitStructure;
GPIO_InitTypeDef            GPIO_InitStructure;
// /* TIM2 clock enable */
//   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//
//    /* GPIOC  clock enable */
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//
//    /* GPIOC Configuration: TIM2 channel 2 as alternate function push-pull */
//    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1;
//    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOA, &GPIO_InitStructure);
//
// /* -----------------------------------------------------------------------
//    TIM2 Configuration: generate PWM signals with different duty cycles:
//    TIM2 CLK = 20MHz(APB1=PCLK1 -> Time2 Multip*2), Prescaler = 0x0, TIM2
// counter clock = 20 MHz
//    TIM2 ARR Register = 525 => TIM2 Frequency = TIM2 counter clock/(ARR + 1)
//    TIM2 Frequency = 38022 Hz.
//
//    Channel2 duty cycle = (TIM2_CCR2/ TIM2_ARR')* 100 = ~50%
//    ----------------------------------------------------------------------- */
//    /* Time base configuration */
//    TIM_TimeBaseStructure.TIM_Period = 525;
//    TIM_TimeBaseStructure.TIM_Prescaler = 0;
//    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
//    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//
//    /* PWM1 Mode configuration: Channel2 */
//    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
//    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
//    TIM_OCInitStructure.TIM_Pulse = (TIM_TimeBaseStructure.TIM_Period + 1)/2;
//    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
//    TIM_OC2Init(TIM2, &TIM_OCInitStructure);
//   
// TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);
//
// TIM_ARRPreloadConfig(TIM2, ENABLE);
// TIM_Cmd(TIM2, ENABLE);
//

/* TIM8 clock enable */
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
    /* GPIOC  clock enable */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    /* GPIOC Configuration: TIM8 channel 4 as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* -----------------------------------------------------------------------
    TIM8 Configuration: generate PWM signals with different duty cycles:
    TIM8 CLK = 40MHz
   counter clock = 40 MHz
    TIM8 ARR Register  => TIM8 Frequency = TIM8 counter clock/(ARR + 1)
    TIM8 Frequency = 38022 Hz.
    Channel2 duty cycle = (TIM2_CCR2/ TIM2_ARR')* 100 = ~50%
    ----------------------------------------------------------------------- */
    /* Time base configuration */
    TIM_TimeBaseStructure.TIM_Period = 1052;//525;
    TIM_TimeBaseStructure.TIM_Prescaler = 0;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
    /* PWM1 Mode configuration: Channel2 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable ;
    TIM_OCInitStructure.TIM_OutputNState= TIM_OutputNState_Enable ;
TIM_OCInitStructure.TIM_Pulse = (TIM_TimeBaseStructure.TIM_Period + 1)/2;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High ;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set ;
TIM_OCInitStructure.TIM_OCNIdleState= TIM_OCNIdleState_Set ;

    TIM_OC4Init(TIM8, &TIM_OCInitStructure);
   
TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM8, ENABLE);
TIM_Cmd(TIM8, ENABLE);

DelayUS(500); }

打斜杠的是原先我用PA1产生的38K载波,而我用TIM8_CH4的时候就不行了,网上找了一下没找到,请香主帮忙再看一下。我用的STM32103et6  LQFP144
再datasheet 里面我看到 PC9 DEFAULT 是TIM8_CH4/SDIO_D1

使用特权

评论回复
6
pentral0311|  楼主 | 2012-2-24 10:35 | 只看该作者
能产生了,
还需添加一个        TIM_CtrlPWMOutputs(TIM8,ENABLE);
函数。
暂时从示波器上能看到38K的波形了,不知道配置上有无问题,香主还是帮我确认一下。

使用特权

评论回复
7
香水城| | 2012-2-24 11:02 | 只看该作者
不知道要确认什么?

STM32的信号哪里不对?

使用特权

评论回复
8
pentral0311|  楼主 | 2012-2-24 11:49 | 只看该作者
本帖最后由 pentral0311 于 2012-2-24 11:53 编辑

呵呵
配置的问题咯,现在测试结果来看OK了

现在就剩SPI复位管脚有动作的问题了,这个就是希望香主给介绍一下SPI模块的工作情况

使用特权

评论回复
9
香水城| | 2012-2-24 12:04 | 只看该作者
SPI没有复位管脚,怎么会有"SPI复位管脚有动作的问题"!

使用特权

评论回复
10
pentral0311|  楼主 | 2012-2-24 12:29 | 只看该作者
描述有误,我是说当我SPI_Cmd(SPI2,DISABLE)的时候,相关的会有哪些动作.

使用特权

评论回复
11
香水城| | 2012-2-24 12:34 | 只看该作者
描述有误,我是说当我SPI_Cmd(SPI2,DISABLE)的时候,相关的会有哪些动作.
pentral0311 发表于 2012-2-24 12:29


我在2楼的几个问题都没有好的答案:
第1个问题,不知道是哪个引脚
第2个问题,你给的这个型号我也不知道是什么器件
第3个问题,没有答案

你要问问题,请把你碰到的问题尽可能细的描述清楚,否则别人没办法帮你,更不会积极地帮你,这是你自己的问题!

使用特权

评论回复
12
pentral0311|  楼主 | 2012-2-24 13:03 | 只看该作者
第1个  PA5 SPI的CLK脚
第2个  我用的MCU是STM32103et6 与 FM25V02(我用了2组SPI,观察到的情况相同)
第3个   这个其实我在4楼有提到, 只是我贴不上图,是一个顶峰波形,峰值不大,只有正常的(1/3)*3.3)v

使用特权

评论回复
13
pentral0311|  楼主 | 2012-2-24 13:05 | 只看该作者
香主,你真敬业,这么快就回复了,我还以为到1:30后的:victory:

使用特权

评论回复
14
香水城| | 2012-2-24 13:42 | 只看该作者
4楼说的是“SPI2 接的是ATT7022E 出现一个三角波”,12楼又说“STM32103et6 与 FM25V02”,到底谁跟谁?

三角波出现在哪里?哪个引脚?

使用特权

评论回复
15
pentral0311|  楼主 | 2012-2-24 16:03 | 只看该作者
三角波出现在PA5 SPI CLK脚上

使用特权

评论回复
16
香水城| | 2012-2-24 16:08 | 只看该作者
三角波出现在PA5 SPI CLK脚上
pentral0311 发表于 2012-2-24 16:03


这说明PA5上的外部负载太重,把PA5悬空后再测试一下看看波形如何。

另外,请使用“高级回复”,再点击“批量上传”可以贴图。

使用特权

评论回复
17
wangc111| | 2012-2-24 16:11 | 只看该作者
PA5 spi clk 脚

使用特权

评论回复
18
pentral0311|  楼主 | 2012-3-5 15:47 | 只看该作者
SCK的问题,我试过了,情况依旧。
现在操作读U盘的时候,碰到不能上传UPLOAD.BIN,文件打开总是失败,
我是在USBH_USR_IAPMenu里面直接调用了COMMAND_UPLOAD。

file_fopen(&file, &efs.myFs, "UPLOAD.BIN", 'w') == 0 失败

使用特权

评论回复
19
weiyuliang| | 2013-6-15 09:40 | 只看该作者

使用特权

评论回复
20
it_yrj| | 2013-6-15 12:32 | 只看该作者
这个帖子看的好纠结啊。。。

使用特权

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

本版积分规则

11

主题

176

帖子

1

粉丝