打印

GD32E503使用spi,在硬件重启后sck没有波形的问题

[复制链接]
1063|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用芯片:GD32E503vct6,在调试spi时遇到一个比较奇怪的问题,在debug模式和首次下载程序下,spi可以正常工作,但是只要给板子重新上电,则spi的sck一直为低电平,mosi电平正常。spi配置如下:
void LL_Spi_Init(void)
{
    //GPIO CONFIG
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_SPI2);
    //rcu_periph_clock_enable(RCU_AF);

    /* SPI0 GPIO config:SCK/PB3, MISO/PB4, MOSI/PB5 */
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_3);
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
        //gpio_pin_remap_config(GPIO_SPI0_REMAP,ENABLE);

    spi_parameter_struct spi_init_struct;

    /* SPI0 parameter config */
    spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;
    spi_init_struct.device_mode          = SPI_MASTER;
    spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;
    spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
    spi_init_struct.nss                  = SPI_NSS_SOFT;
    spi_init_struct.prescale             = SPI_PSC_64;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI2, &spi_init_struct);
       
        spi_enable(SPI2);
}


数据发送代码:
uint8_t drv_spi_read_write_byte( uint8_t TxByte )
{
        uint8_t l_Data = 0;
        uint16_t l_WaitTime = 0;
       
        while( RESET == spi_i2s_flag_get( SPI2, SPI_FLAG_TBE ) )                //等待发送缓冲区为空
        {
                if( SPI_WAIT_TIMEOUT == ++l_WaitTime )
                {
                        break;                        //如果等待超时则退出
                }
        }
        l_WaitTime = 0;                //重新设置接收等待时间(因为SPI的速度很快,正常情况下在发送完成之后会立即收到数据,等待时间不需要过长)
    spi_i2s_data_transmit(SPI2, TxByte);        //发送数据
       
        while( RESET == spi_i2s_flag_get( SPI2, SPI_FLAG_RBNE ) )                //等待接收缓冲区非空
        {
                if( SPI_WAIT_TIMEOUT == ++l_WaitTime )
                {
                        break;                        //如果等待超时则退出
                }
        }
       
        l_Data = spi_i2s_data_receive(SPI2);        //读取接收数据
       
        return l_Data;                //返回
}


cs:使用的软件spi。

使用特权

评论回复
沙发
czq624589971|  楼主 | 2022-3-23 12:16 | 只看该作者
附上sck波形图

微信图片_20220323121516.jpg (219.96 KB )

微信图片_20220323121516.jpg

微信图片_20220323121512.jpg (218.54 KB )

微信图片_20220323121512.jpg

使用特权

评论回复
板凳
czq624589971|  楼主 | 2022-3-23 12:18 | 只看该作者
按照官方给的文档,重启后感觉自动进入了从机模式。

1648009038(1).jpg (325.29 KB )

1648009038(1).jpg

使用特权

评论回复
地板
czq624589971|  楼主 | 2022-3-23 14:04 | 只看该作者
已经解决,PB3和jlink引脚复用了,关闭jlink引脚即可
        //关闭jlink的JDIO和JTDI
    //JTAG-DP 关闭
    //SW-DP 开启
        // AFIO_PCF0 |= (0x2<<23);
        gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP,ENABLE);

使用特权

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

本版积分规则

5

主题

90

帖子

2

粉丝