打印

GD32F103RC 的SPI3似乎没有启动发送?

[复制链接]
1388|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ActiveAndy|  楼主 | 2019-9-19 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU是 GD32F103RCT6,启动文件是startup_gd32F01x_hd.s

/*************************************
名称:SPI3接口配置
功能:
参数:
************************************/
void SPI3_Configuration(void)
{
        SPI_InitPara  SPI_InitStructure;
               
        RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_SPI3, ENABLE );               
        SPI_I2S_DeInit(SPI3);
       
        SPI_InitStructure.SPI_TransType = SPI_TRANSTYPE_FULLDUPLEX;       
        SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;                       
        SPI_InitStructure.SPI_FrameFormat = SPI_FRAMEFORMAT_8BIT;               
        SPI_InitStructure.SPI_SCKPL = SPI_SCKPL_HIGH;                       
        SPI_InitStructure.SPI_SCKPH = SPI_SCKPH_2EDGE;               
        SPI_InitStructure.SPI_SWNSSEN = SPI_SWNSS_SOFT;               
        SPI_InitStructure.SPI_PSC = SPI_PSC_32;                               
        SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB;       
        SPI_InitStructure.SPI_CRCPOL = 7;                                       
        SPI_Init(SPI3, &SPI_InitStructure);                         
        SPI_Enable(SPI3, ENABLE);                
//        MB85RS_ReadWriteByte(0x00);                //0x00,0xff,0xaa都行         
}

u8 MB85RS_ReadWriteByte(u8 TxData)                           //SPI 发送接收字节
{
        while (SPI_I2S_GetBitState(SPI3, SPI_FLAG_TBE) == RESET){} //检查指定的SPI标志位设置与否:发送  

        SPI_I2S_SendData(SPI3, TxData); //通过外设SPIx发送一个数据
                                    
        return 0 ;
}

SPI3_Configuration后反复调用MB85RS_ReadWriteByte,只有第一次while循环直接跳出继续执行SPI_I2S_SendData
后续调用一直我while循环不能跳出。

似乎SPI3并没有启动发送,一直处于发送状态位不为空(没有发送完成)。
这时应该和外设无关,纯粹GD32F103RC的内部关系。

谢谢!

使用特权

评论回复
沙发
zeshoufx| | 2019-9-19 21:32 | 只看该作者
大哥,,人家是从0开始,,SPI0、SPI1、SPI2,,没有所谓的SPI3

使用特权

评论回复
板凳
ActiveAndy|  楼主 | 2019-9-19 21:58 | 只看该作者
GD库是SP1,SP2,SP3,不是从0开始的奥!
不过还是谢谢你!@zeshoufx

使用特权

评论回复
地板
zeshoufx| | 2019-9-20 10:27 | 只看该作者
你用的是1.0版本的固件库吗

使用特权

评论回复
5
sonicll| | 2019-9-20 11:22 | 只看该作者
你禁用JTAG了没?SPI3默认与JTAG管脚冲突,要么禁用JTAG,要么remap到其他管脚

使用特权

评论回复
6
ActiveAndy|  楼主 | 2019-9-20 18:01 | 只看该作者
问题解决了,是函数顺序防止错误,导致问题。非常感谢大家!

使用特权

评论回复
7
Ketose| | 2019-9-20 19:28 | 只看该作者
看你的标题是要把这个锅甩给芯片厂商。。。

使用特权

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

本版积分规则

26

主题

64

帖子

1

粉丝