打印

请教下,GD32F103VBT6替代stm32f103VBT6

[复制链接]
1785|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rosewoman|  楼主 | 2021-5-11 09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教下各位大神,stm32f103vbt6由10多块到现在涨价到200多块,实在用不起了,用GD32F103VBT6替代,替代时发现个问题,我用的是SPI2,驱动液晶,引脚是PB15 SPI2->MOSI,PB13 SPI2->SCK,但是驱动不正常,以前都是用smt32的,另一款产品用gd32f103rbt6替代stm32f103rbt6就完全正常,啥都不用改,所以想问下gd32f103VBT6的SPI功能是不是和stm32的不同,有哪些要注意的?

使用特权

评论回复
评论
PICdaily 2021-5-31 10:12 回复TA
PIC替换QQ2722879901 
沙发
rosewoman|  楼主 | 2021-5-11 09:21 | 只看该作者
这是初始化代码:
/*
*********************************************************************************************************
*        函 数 名: LCDComConfig
*        功能说明: LCD显示驱动配置
*        形    参: 无
*        返 回 值: 无
* 硬件接口说明:
* PB15-SPI2_MOSI  PB13-SPI2_SCK  PB12-A0  PB11-RST  PB10-CS
*********************************************************************************************************
*/
static void LCDComConfig(void)
{
         GPIO_InitTypeDef  GPIO_InitStructure;
         SPI_InitTypeDef spi;
       
        /*打开GPIO时钟*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
       
        /* 配置引脚 */
        GPIO_InitStructure.GPIO_Pin = LCD_A0_IO | LCD_RST_IO | LCD_CS_IO;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(LCD_PORT, &GPIO_InitStructure);
       
        /*配置SPI模式*/
        GPIO_InitStructure.GPIO_Pin = LCD_MOSI_IO | LCD_SCK_IO;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(LCD_PORT, &GPIO_InitStructure);
       
        /* SPI2 Config -------------------------------------------------------------*/
        spi.SPI_Direction = SPI_Direction_1Line_Tx;        /* 数据方向:1线全双工 */
        spi.SPI_Mode = SPI_Mode_Master;                                                                                                /* STM32的SPI工作模式 :主机模式 */
        spi.SPI_DataSize = SPI_DataSize_8b;                                                                                /* 数据位长度 : 8位 */
        spi.SPI_CPOL = SPI_CPOL_High;                                                                                                        /* 时钟极性高电平 SPI_CPOL_High*/
        spi.SPI_CPHA = SPI_CPHA_2Edge;                                                                                                /* 时钟的第2个边沿采样数据 SPI_CPHA_2Edge*/
        spi.SPI_NSS = SPI_NSS_Soft;
        spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;        /* 设置波特率预分频系数 SPI_BaudRatePrescaler_16 */
        spi.SPI_FirstBit = SPI_FirstBit_MSB;                                                                        /* 数据位传输次序:高位先传 */
        spi.SPI_CRCPolynomial = 7;                                                                                                                        /* CRC多项式寄存器,复位后为7.*/
        SPI_Init(SPI2, &spi);
       
        /* Enable SPI2 */
        SPI_Cmd(SPI2, ENABLE);
       
        LCD_A0_0;
        LCD_CS_1;
        LCD_RST_1;
//        GPIO_ResetBits(GPIOB,GPIO_Pin_10);
//        GPIO_ResetBits(GPIOB,GPIO_Pin_11);
//        GPIO_ResetBits(GPIOB,GPIO_Pin_12);
}

使用特权

评论回复
板凳
rosewoman|  楼主 | 2021-5-11 14:14 | 只看该作者
请教下各位,你们是通过判断什么来判断SPI发送完成的,通过判断SPI_I2S_FLAG_BSY 标志位不行!!

使用特权

评论回复
地板
yangxiaor520| | 2021-5-11 18:38 | 只看该作者
200多块?这么夸张?

使用特权

评论回复
5
AINZGOWN| | 2021-5-12 15:01 | 只看该作者
单片机的涨幅比显卡还离谱么

使用特权

评论回复
6
rosewoman|  楼主 | 2021-5-14 09:06 | 只看该作者
结帖结帖拉,调好拉,在百度上查了好久,终于在一个老哥的帖子得到提示,我这用的是单线SPI驱动液晶,GD的SPI发送和ST的发送略不同,ST发送先判断发送缓冲区是否为空,SPI_I2S_FLAG_TXE = 1,在装数据,最后判断总线是否空闲 SPI_I2S_FLAG_BSY = 0,而GD的就必须要先装数据,再判断发送缓冲区为空,最后再判断总线是否空闲。然后其他功能有些软件延时的要注意GD的时钟频率为108M,ST的是72M,相应的延时要*108/72。最后想说下,这次ST的芯片涨价这么离谱,肯定是上游经销商囤货,炒芯片,既然你们炒芯片我就把方案全换国产的,让芯片烂在奸商手里,让国产芯片发展起来,用毛ST,国产,YES!

使用特权

评论回复
7
单片机搬运工| | 2022-7-26 18:13 | 只看该作者
软硬件全兼容-九科芯NS32F103VBT6   Q:349647703

使用特权

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

本版积分规则

5

主题

32

帖子

0

粉丝