搜索
bottom↓
回复: 8

请教下使用f7系列的单片机使用spi5 怎么sck空闲情况为高 ?

[复制链接]

出0入0汤圆

发表于 2022-10-24 11:53:14 | 显示全部楼层 |阅读模式
请教下,使用 f7 系列的单片机,使用spi5 , 怎么 sck 空闲情况为高 ?


配置如下,
void bsp_InitSPIParam(uint32_t _BaudRatePrescaler, uint32_t _CLKPhase, uint32_t _CLKPolarity)
{
        /* 提高执行效率,只有在SPI硬件参数发生变化时,才执行HAL_Init */
        if ((s_BaudRatePrescaler == _BaudRatePrescaler)
                        && (s_CLKPhase == _CLKPhase)
                        && (s_CLKPolarity == _CLKPolarity))
        {               
                return;
        }

        s_BaudRatePrescaler = _BaudRatePrescaler;       
        s_CLKPhase                                         = _CLKPhase;
        s_CLKPolarity                         = _CLKPolarity;
       
        /* 设置SPI参数 */
        SPI_Handle.Instance               = SPI5;                   /* 例化SPI */
       
        /* 复位SPI */
        if(HAL_SPI_DeInit(&SPI_Handle) != HAL_OK)
        {
                _Error_Handler(__FILE__, __LINE__);     
        }
       
        SPI_Handle.Instance               = SPI5;                   /* 例化SPI */
        SPI_Handle.Init.BaudRatePrescaler = _BaudRatePrescaler;     /* 设置波特率 */
        SPI_Handle.Init.Direction         = SPI_DIRECTION_2LINES;   /* 全双工 */
        SPI_Handle.Init.CLKPhase          = _CLKPhase;              /* 配置时钟相位 */
        SPI_Handle.Init.CLKPolarity       = _CLKPolarity;           /* 配置时钟极性 */
        SPI_Handle.Init.DataSize          = SPI_DATASIZE_8BIT;      /* 设置数据宽度 */
        SPI_Handle.Init.FirstBit          = SPI_FIRSTBIT_MSB;       /* 数据传输先传高位 */
        SPI_Handle.Init.TIMode            = SPI_TIMODE_DISABLE;     /* 禁止TI模式  */
        SPI_Handle.Init.CRCCalculation    = SPI_CRCCALCULATION_DISABLE; /* 禁止CRC */
        SPI_Handle.Init.CRCPolynomial     = 7;                       /* 禁止CRC后,此位无效 */
        SPI_Handle.Init.NSS               = SPI_NSS_SOFT;            /* 使用软件方式管理片选引脚 */
        SPI_Handle.Init.Mode                                       = SPI_MODE_MASTER;         /* SPI工作在主控模式 */
        SPI_Handle.Init.CRCLength         = SPI_CRC_LENGTH_DATASIZE;

       
        /* 初始化SPI */
        if (HAL_SPI_Init(&SPI_Handle) != HAL_OK)
        {
                _Error_Handler(__FILE__, __LINE__);
        }       
}


void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(spiHandle->Instance==SPI5)
  {
    /* SPI5 clock enable */
    __HAL_RCC_SPI5_CLK_ENABLE();

    __HAL_RCC_GPIOF_CLK_ENABLE();
    __HAL_RCC_GPIOH_CLK_ENABLE();
    /**SPI5 GPIO Configuration
    PF9     ------> SPI5_MOSI
    PH6     ------> SPI5_SCK
    PH7     ------> SPI5_MISO
    */
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;                                   //GPIO_NOPULL;   
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; //GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI5;
    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_7;
    HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
               
    GPIO_InitStruct.Pin = GPIO_PIN_6;
    HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
}
}


bsp_InitSPIParam(SPI_BAUDRATEPRESCALER_8, SPI_PHASE_1EDGE, SPI_POLARITY_LOW);  // 这个地方貌似配置的 sck 空闲时为低电平 ,可实际上 sck 空闲时他就是为 高电平 ?? 迷糊了

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出15入178汤圆

发表于 2022-10-24 14:28:44 | 显示全部楼层
可以先复核下控制寄存器,CPOL/CPHA都是0,就符合你的设计

出0入0汤圆

 楼主| 发表于 2022-10-24 15:11:58 | 显示全部楼层
2nd 发表于 2022-10-24 14:28
可以先复核下控制寄存器,CPOL/CPHA都是0,就符合你的设计
(引用自2楼)

在配置钱都已经复位了啊   HAL_SPI_DeInit  

出0入442汤圆

发表于 2022-10-24 17:02:43 来自手机 | 显示全部楼层
能用就行了。sck高是mode3。

出0入0汤圆

 楼主| 发表于 2022-10-24 17:10:39 | 显示全部楼层
wye11083 发表于 2022-10-24 17:02
能用就行了。sck高是mode3。
(引用自4楼)

我配置的是 mode 0 模式啊,而且貌似目前 spi 工作也不正常

出0入0汤圆

 楼主| 发表于 2022-10-25 20:29:45 | 显示全部楼层
本帖最后由 hpdell 于 2022-10-25 20:36 编辑
wye11083 发表于 2022-10-24 17:02
能用就行了。sck高是mode3。
(引用自4楼)


你好,我的是 2 片板, 也就是 对板连接组合在一起的 ,

目前终于发现了问题了, 原来是 对板连接 副板 造成的, 副班那边只要引 spi 信号过去, 那对板连接主板的 spi 工作就会异常 ??,
对板连接副班那边也没有接任何的 spi 器件也不行,
如果不把对板连接主板上的 spi 引到 对板连接副班那边, 则对板连接主板上的 spi 工作完全正常, 貌似是是神马干扰引起  .. ???
这下麻烦了哟 , 大神有没有什么比较好的解决方法啊 ?

造成信号紊乱的 信号是  MISO , 当然,其他几个多少也会有些影响,但总体来说影响没有 MISO 大而已

出0入0汤圆

 楼主| 发表于 2022-10-25 20:29:56 | 显示全部楼层
本帖最后由 hpdell 于 2022-10-25 20:36 编辑
2nd 发表于 2022-10-24 14:28
可以先复核下控制寄存器,CPOL/CPHA都是0,就符合你的设计
(引用自2楼)


你好,我的是 2 片板, 也就是 对板连接组合在一起的 ,

目前终于发现了问题了, 原来是 对板连接 副板 造成的, 副班那边只要引 spi 信号过去, 那对板连接主板的 spi 工作就会异常 ??,
对板连接副班那边也没有接任何的 spi 器件也不行,
如果不把对板连接主板上的 spi 引到 对板连接副班那边, 则对板连接主板上的 spi 工作完全正常, 貌似是是神马干扰引起  .. ???
这下麻烦了哟 , 大神有没有什么比较好的解决方法啊 ?

造成信号紊乱的 信号是  MISO , 当然,其他几个多少也会有些影响,但总体来说影响没有 MISO 大而已

出0入442汤圆

发表于 2022-10-25 22:45:41 来自手机 | 显示全部楼层
hpdell 发表于 2022-10-25 20:29
你好,我的是 2 片板, 也就是 对板连接组合在一起的 ,

目前终于发现了问题了, 原来是 对板连接 副板 造成 ...

(引用自6楼)

你找找drive strength,设大点试试。我记得stm32默认非常小。

出0入0汤圆

 楼主| 发表于 2022-10-26 09:17:17 | 显示全部楼层
wye11083 发表于 2022-10-25 22:45
你找找drive strength,设大点试试。我记得stm32默认非常小。
(引用自8楼)

我没有使用 drive strength 这个功能,我就是基本的 spi 操作
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 13:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表