打印

GD32E230C8T6 SPI0数据读出全为0xFF,求助!

[复制链接]
2101|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wsdmzz|  楼主 | 2022-6-1 08:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
逻辑分析仪数据抓取的是对的

static void SpiInit( void )
{


                rcu_periph_clock_enable(RCU_GPIOA);
                rcu_periph_clock_enable(SPI_CLK);    //PA5,PA6,PA7

    /* SPI0 GPIO config: NSS/PA4 SCK/PA5, MISO/PA6, MOSI/PA7 */
    gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_5| GPIO_PIN_7 );
    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5 | GPIO_PIN_7);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_7);
//                gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_5 | GPIO_PIN_7);
//                gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_7);
                gpio_mode_set (GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_6);

                 spi_parameter_struct spi_init_struct;
    /* deinitilize SPI and the parameters */
    spi_i2s_deinit(SPI0);
    spi_struct_para_init(&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_8;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI0, &spi_init_struct);
                spi_crc_polynomial_set(SPI0,7);
                spi_enable(SPI_INTERFACE);                                                                                                               //使能SPI0

}
void SX1276HALInit( void )
{
    rcu_periph_clock_enable(RCU_GPIOA);
                rcu_periph_clock_enable(RCU_GPIOB);
       
       
                gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_4);
                gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
                //CS片选默认拉高
                gpio_bit_set(GPIOA,GPIO_PIN_4);
                SpiInit();
       
                //配置复位引脚
                gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
                gpio_bit_reset(GPIOB,GPIO_PIN_11);
   
    // Configure DIO0
    gpio_mode_set(GPIOB,  GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
   
   
    // Configure DIO1
   // gpio_mode_set(GPIOB,  GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_2);
    //gpio_input_bit_get(GPIOB, GPIO_PIN_2);
               
                // Configure DIO3
    //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
    //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
               
                // Configure DIO4
    //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
    //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
        }
//spi发送和接收函数
uint8_t SpiInOut(uint8_t outData )
{
//        uint8_t ret_Data;
//
//        while(RESET == spi_i2s_flag_get(SPI0,SPI_FLAG_TBE))
//        {//读取"SPI发送缓冲区空"标志
//         //等待SPI发送完成
//        }
//
//        spi_i2s_data_transmit(SPI0,outData);
//        //将byte写入"SPI0数据寄存器"
//        while(RESET == spi_i2s_flag_get(SPI0,SPI_FLAG_RBNE))
//        {//读取"SPI接收缓冲区非空"标志
//         //等待SPI接收完成
//        }
//
//        ret_Data = spi_i2s_data_receive(SPI0);
//        //从"SPI数据寄存器"读取数据
// return ret_Data;
    uint16_t tmp;
    while(spi_i2s_flag_get(SPI0, SPI_FLAG_TBE) == RESET);
    spi_i2s_data_transmit(SPI0, outData);
    while(spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE) == RESET);
    tmp = spi_i2s_data_receive(SPI0);
    return ((uint8_t)(tmp & 0xff));

}


使用特权

评论回复
沙发
sonicll| | 2022-6-1 09:01 | 只看该作者
MISO的GPIO也要配置成AF模式,这个和F10x系列是不一样的

使用特权

评论回复
板凳
wsdmzz|  楼主 | 2022-6-1 11:17 | 只看该作者
sonicll 发表于 2022-6-1 09:01
MISO的GPIO也要配置成AF模式,这个和F10x系列是不一样的

谢谢  终于解决了这个问题  太谢谢了

使用特权

评论回复
地板
koala889| | 2022-6-3 08:23 | 只看该作者
模式配置的问题么

使用特权

评论回复
5
tpgf| | 2022-7-1 08:56 | 只看该作者
分析仪不错 多少钱啊

使用特权

评论回复
6
aoyi| | 2022-7-1 09:08 | 只看该作者
还有其他模式的吗

使用特权

评论回复
7
drer| | 2022-7-1 09:19 | 只看该作者
模式改变之后引脚需要重新初始化吗

使用特权

评论回复
8
kxsi| | 2022-7-1 09:29 | 只看该作者
在什么情况下选择哪种模式呢

使用特权

评论回复
9
wiba| | 2022-7-1 09:37 | 只看该作者
手册上有相关的说明吗

使用特权

评论回复
10
coshi| | 2022-7-1 10:05 | 只看该作者
如果不了解的话只能挨个试试了

使用特权

评论回复
11
lvben5d| | 2022-7-1 15:09 | 只看该作者
楼主解决没?  波形如果都没错,就是最后接收读出寄存器 那里问题了。  SPI 注意主机模式,CS引脚的控制

使用特权

评论回复
12
buffalo_bill| | 2022-7-26 15:43 | 只看该作者
lvben5d 发表于 2022-7-1 15:09
楼主解决没?  波形如果都没错,就是最后接收读出寄存器 那里问题了。  SPI 注意主机模式,CS引脚的 ...

你好,我的SPI还没有调通。能请教下吗

使用特权

评论回复
13
lvben5d| | 2022-7-27 07:19 | 只看该作者
给个邮箱,我发我的GD32E103 SPI代码给你, 其实官网例子是不错的 。   SPI 一般做主机,需要关心下从机支持的SPI模式呢,这个往往容易出错,主频尽量先慢一点,

使用特权

评论回复
14
wsdmzz|  楼主 | 2022-8-25 08:28 | 只看该作者
tpgf 发表于 2022-7-1 08:56
分析仪不错 多少钱啊

淘宝 300左右

使用特权

评论回复
15
wsdmzz|  楼主 | 2022-8-25 08:29 | 只看该作者
lvben5d 发表于 2022-7-27 07:19
给个邮箱,我发我的GD32E103 SPI代码给你, 其实官网例子是不错的 。   SPI 一般做主机,需要关心下 ...

谢谢 已经解决

使用特权

评论回复
16
wsdmzz|  楼主 | 2022-8-25 08:30 | 只看该作者
lvben5d 发表于 2022-7-1 15:09
楼主解决没?  波形如果都没错,就是最后接收读出寄存器 那里问题了。  SPI 注意主机模式,CS引脚的 ...

谢谢 用楼中兄弟的解答 已经解决

使用特权

评论回复
17
小夏天的大西瓜| | 2022-11-24 18:01 | 只看该作者
楼主怎么解决的,是配置的问题嘛?给大家分享一下

使用特权

评论回复
18
LOVEEVER| | 2022-11-24 20:45 | 只看该作者

您好!是主从的问题还是配置的问题/?

使用特权

评论回复
19
uytyu| | 2022-11-25 10:53 | 只看该作者
这个是不是需要上拉电阻呢?              

使用特权

评论回复
20
pmp| | 2022-11-25 11:21 | 只看该作者
硬件spi可能配置的问题,推荐使用IO口模拟spi吧。

使用特权

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

本版积分规则

7

主题

29

帖子

0

粉丝