打印

已关闭

[复制链接]
879|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sea1105|  楼主 | 2022-9-19 09:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sea1105 于 2022-9-26 09:19 编辑

已关闭

使用特权

评论回复
沙发
AnkerSong| | 2022-9-19 09:37 | 只看该作者
因为PB3\4\5对应的是SPI0,不是SPI2。麻烦好好看手册,别瞎配。
另外,善意提醒你,不要用F103,用F303

使用特权

评论回复
板凳
sea1105|  楼主 | 2022-9-19 09:46 | 只看该作者
AnkerSong 发表于 2022-9-19 09:37
因为PB3\4\5对应的是SPI0,不是SPI2。麻烦好好看手册,别瞎配。
另外,善意提醒你,不要用F103,用F303
...

不是吧?
PB3 55 I/O 5VTDefault: JTDO
Alternate:SPI2_SCK(4), I2S2_CK(4)
Remap: PB3, TRACESWO(4), TIMER1_CH1, SPI0_SCK
PB4 56 I/O 5VTDefault: NJTRST
Alternate: SPI2_MISO(4)
Remap: TIMER2_CH0, PB4, SPI0_MISO
PB5 57 I/ODefault: PB5
Alternate: I2C0_SMBA, SPI2_MOSI(4), I2S2_SD(4)
Remap: TIMER2_CH1, SPI0_MOSI



使用特权

评论回复
地板
AnkerSong| | 2022-9-19 09:48 | 只看该作者
本帖最后由 AnkerSong 于 2022-9-19 09:49 编辑

你用的什么封装?Alternal开AF就行,不能Remap

使用特权

评论回复
5
sea1105|  楼主 | 2022-9-19 10:19 | 只看该作者
AnkerSong 发表于 2022-9-19 09:48
你用的什么封装?Alternal开AF就行,不能Remap

用的GD32F103Rx LQFP64Remap
Remap使能了这个#define GPIO_SWJ_SWDPENABLE_REMAP        ((uint32_t)0x00300200U)   /*!< JTAG-DP disabled and SW-DP enabled */

使用特权

评论回复
6
AnkerSong| | 2022-9-19 11:27 | 只看该作者
sea1105 发表于 2022-9-19 10:19
用的GD32F103Rx LQFP64Remap
Remap使能了这个#define GPIO_SWJ_SWDPENABLE_REMAP        ((uint32_t)0x00 ...
试一下
void spi__config(void)
{
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);
    rcu_periph_clock_enable(RCU_SPI2);
        
    /* configure SPI2 GPIO: SCK/PB3, MISO/PB4, MOSI/PB5,CS/PB6 */
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3|GPIO_PIN_4 |GPIO_PIN_5);
    gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_6);
        
    spi_parameter_struct spi_init_struct;
    /* deinitilize SPI and the parameters */
    spi_disable(SPI2);
    spi_i2s_deinit(SPI2);
    spi_struct_para_init(&spi_init_struct);

    /* configure SPI2 parameter */
    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_8;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI2, &spi_init_struct);
    spi_enable(SPI2);
}

使用特权

评论回复
7
AnkerSong| | 2022-9-19 12:11 | 只看该作者
spi__config();
spi_read_byte(0xA5);
看看能不能发出数据。我这边实测可以。
另外,认真的,建议换F303

使用特权

评论回复
8
ninxin| | 2022-9-20 08:43 | 只看该作者
103仿制不成熟

使用特权

评论回复
9
Peter6699| | 2022-9-20 09:23 | 只看该作者
关闭JTAG功能,在配置IO就行了

使用特权

评论回复
10
Peter6699| | 2022-9-20 09:40 | 只看该作者
本帖最后由 Peter6699 于 2022-9-20 09:43 编辑

void spi_gpio_config(void)
{
        gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);
       // gpio_pin_remap_config(GPIO_SPI2_REMAP,DISABLE);//SPI2不用重映射
    /* configure SPI2 GPIO: SCK/PB3, MISO/PB4, MOSI/PB5,CS/PB6 */
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3|GPIO_PIN_5);
        gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,CS_Pin);
}

使用特权

评论回复
11
starsuper123| | 2022-9-23 17:18 | 只看该作者
spi_nss_internal_high(SPI2);//--NSS软件模式下SPI的NSS位设为高(主机)
spi_nss_internal_low(SPI0);        //--NSS软件模式下SPI的NSS位设为低(从机)
建议看一下用户手册NSS功能介绍那一章节

使用特权

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

本版积分规则

6

主题

54

帖子

0

粉丝