关于使用GD32E230C SPI驱动SX1278遇到的坑

  • GD32E230C
    • SPI配置

GD32E230C

使用GD32E230C8T6 SPI 使用的过程

SPI配置

#define RESET_IOPORT                                GPIOB
#define RESET_PIN                                   GPIO_PIN_11/*!* SX1276 SPI definitions*/
#define NSS_IOPORT                                  GPIOA
#define NSS_PIN                                     GPIO_PIN_4#define SPI_INTERFACE                               SPI0
#define SPI_CLK                                     RCU_SPI0#define SPI_PIN_SCK_PORT                            GPIOA
#define SPI_PIN_SCK_PORT_CLK                        RCU_GPIOA
#define SPI_PIN_SCK                                 GPIO_PIN_5#define SPI_PIN_MISO_PORT                           GPIOA
#define SPI_PIN_MISO_PORT_CLK                       RCU_GPIOA
#define SPI_PIN_MISO                                GPIO_PIN_6#define SPI_PIN_MOSI_PORT                           GPIOA
#define SPI_PIN_MOSI_PORT_CLK                       RCU_GPIOA
#define SPI_PIN_MOSI                                GPIO_PIN_7/*!* SX1276 DIO pins  I/O definitions*/
#define DIO0_IOPORT                                 GPIOB
#define DIO0_PIN                                    GPIO_PIN_0
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_PIN_6 );gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5 | GPIO_PIN_7| GPIO_PIN_6);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_7| GPIO_PIN_6);//坑在这里  MISO的GPIO也要配置成AF模式,这个和F10x系列是不一样的//之前按照F10x系列配置的输入  导致接收一直是0xff
//      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 DIO0gpio_mode_set(GPIOB,  GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
//spi发送和接收函数
uint8_t SpiInOut(uint8_t outData )
{while(RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_TBE));spi_i2s_data_transmit(SPI0, outData);while(RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE));return ((uint8_t)spi_i2s_data_receive(SPI0));}

至此调试基本完成

关于使用GD32E230C SPI驱动SX1278遇到的坑相关推荐

  1. SPI驱动SX1278模块1-网关.SPI头文件,c文件,sx1278头文件和c文件,主函数

    spi.h /******************************************************************* 文件:SPIx.h* 功能:声明SPI功能函数* ...

  2. Linux驱动修炼之道-SPI驱动框架源码分析(上)

    Linux驱动修炼之道-SPI驱动框架源码分析(上)   SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式.相关通讯设备可工作于m/s模式.主设备发起数据帧,允许多个从设 ...

  3. NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  4. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析

    PowerPC + Linux2.6.25平台下的SPI驱动架构分析 Sailor_forever  sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人b ...

  5. 转载:Linux kernel SPI驱动解释

    From: http://www.cnblogs.com/liugf05/archive/2012/12/03/2800457.html 下面有两个大的模块: 一个是SPI总线驱动的分析        ...

  6. PX4原生固件SPI驱动动编写与IMU传感器替换

    适用于PX4原生固件 核心目标:完成XSENS的MTI3,IMU替换.MTI3是一款航姿参考系统,可以独立的输出四元数,加速度,磁力计等,角速度等航姿信息.里面有完整的卡尔曼滤波,可以替换飞控本身里面 ...

  7. S3C2440 SPI驱动框架

    S3C2440 SPI驱动代码详细解读: https://www.linuxidc.com/Linux/2012-08/68402p4.htm 一.platform device and board_ ...

  8. MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏

    目录 上机实战 SPI 驱动 墨水屏 墨水屏介绍 电子纸的分类 电泳型电子纸技术详解 原理 结构 优势与不足 实验电路介绍 程序分析 引脚初始化 SPI模块初始化 发送和接收 全部源代码 main.c ...

  9. OpenWrt 之 MT7628 移植第三方SPI驱动

    1.在OpenWrt系统上移植SPI驱动前,首先要确保SPI相关引脚未被复用为其他功能,比如GPIO:以下操作已假定该条件成立,否则请修改相关dts和c文件中复用配置: 2.打开dts配置文件进行修改 ...

  10. V210 SPI驱动分析

    对于总线设备驱动,是需要分别创建设备和驱动两个结构体,然后根据name,互相匹配,匹配成功后,调用 驱动的probe函数,然后创建设备文件,实现驱动的业务逻辑. 因此,我们就以设备和驱动的注册,以及匹 ...

最新文章

  1. Computer Systems A Programmer’s Perspective ----阅读翻译日志
  2. 我自己为我自己定制的文章模板
  3. php 按条件进行计算的方法
  4. Python 网络爬虫的常用库汇总
  5. php 最后几个字符,php怎么去掉最后三个字符
  6. LWIP的UDP相关API
  7. 向Mate 20 Pro看齐!三星S10支持无线反向充电功能
  8. 即学即用的 30 段 Python 实用代码
  9. selenium浏览器操作以及对象定位
  10. 【2019牛客暑期多校训练营(第七场)E】Find the median【权值线段树】
  11. Hotspot 偏向锁BiasedLocking 源码解析
  12. Java实现部标JTT1078实时音视频传输指令——视频流负载包(RTP)传输
  13. 信息系统安全风险识别与评估
  14. 推荐几张系统维护光盘
  15. 外虚内实是什么意思_俗语“五虚令人贫,五实人富贵”是什么意思?有道理吗?...
  16. Java发送附件到邮箱
  17. 计算机二级web知识点,计算机二级WEB考试主要考哪些内容?
  18. C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:
  19. 南卫理公会大学计算机科学,南卫理公会大学计算机科学硕士专业申请材料及课程设置...
  20. 【文件操作】c语言文件操作(上)

热门文章

  1. 计算机等级考试ppt怎么做,计算机等级考试PPT教学.ppt
  2. 2060显卡驱动最新版本_显卡驱动需更新,铭瑄RTX显卡受益大
  3. 第二十三章 宋桓公自行其是讨苦吃 齐桓公连克宋郑震东方
  4. uva 12304(圆的相关函数模板)
  5. 【神奇的bug】main方法无法执行
  6. 胃病患者饮食结构注意事项
  7. Excel模糊查找+数据透视
  8. 你有哪些“相见恨晚”的UE4学习资料?
  9. Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veraci
  10. 中文数字阿拉伯数字相互转换(Java版本)