关于使用GD32E230C SPI驱动SX1278遇到的坑
关于使用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遇到的坑相关推荐
- SPI驱动SX1278模块1-网关.SPI头文件,c文件,sx1278头文件和c文件,主函数
spi.h /******************************************************************* 文件:SPIx.h* 功能:声明SPI功能函数* ...
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
Linux驱动修炼之道-SPI驱动框架源码分析(上) SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式.相关通讯设备可工作于m/s模式.主设备发起数据帧,允许多个从设 ...
- NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V
NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析
PowerPC + Linux2.6.25平台下的SPI驱动架构分析 Sailor_forever sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人b ...
- 转载:Linux kernel SPI驱动解释
From: http://www.cnblogs.com/liugf05/archive/2012/12/03/2800457.html 下面有两个大的模块: 一个是SPI总线驱动的分析 ...
- PX4原生固件SPI驱动动编写与IMU传感器替换
适用于PX4原生固件 核心目标:完成XSENS的MTI3,IMU替换.MTI3是一款航姿参考系统,可以独立的输出四元数,加速度,磁力计等,角速度等航姿信息.里面有完整的卡尔曼滤波,可以替换飞控本身里面 ...
- S3C2440 SPI驱动框架
S3C2440 SPI驱动代码详细解读: https://www.linuxidc.com/Linux/2012-08/68402p4.htm 一.platform device and board_ ...
- MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏
目录 上机实战 SPI 驱动 墨水屏 墨水屏介绍 电子纸的分类 电泳型电子纸技术详解 原理 结构 优势与不足 实验电路介绍 程序分析 引脚初始化 SPI模块初始化 发送和接收 全部源代码 main.c ...
- OpenWrt 之 MT7628 移植第三方SPI驱动
1.在OpenWrt系统上移植SPI驱动前,首先要确保SPI相关引脚未被复用为其他功能,比如GPIO:以下操作已假定该条件成立,否则请修改相关dts和c文件中复用配置: 2.打开dts配置文件进行修改 ...
- V210 SPI驱动分析
对于总线设备驱动,是需要分别创建设备和驱动两个结构体,然后根据name,互相匹配,匹配成功后,调用 驱动的probe函数,然后创建设备文件,实现驱动的业务逻辑. 因此,我们就以设备和驱动的注册,以及匹 ...
最新文章
- Computer Systems A Programmer’s Perspective ----阅读翻译日志
- 我自己为我自己定制的文章模板
- php 按条件进行计算的方法
- Python 网络爬虫的常用库汇总
- php 最后几个字符,php怎么去掉最后三个字符
- LWIP的UDP相关API
- 向Mate 20 Pro看齐!三星S10支持无线反向充电功能
- 即学即用的 30 段 Python 实用代码
- selenium浏览器操作以及对象定位
- 【2019牛客暑期多校训练营(第七场)E】Find the median【权值线段树】
- Hotspot 偏向锁BiasedLocking 源码解析
- Java实现部标JTT1078实时音视频传输指令——视频流负载包(RTP)传输
- 信息系统安全风险识别与评估
- 推荐几张系统维护光盘
- 外虚内实是什么意思_俗语“五虚令人贫,五实人富贵”是什么意思?有道理吗?...
- Java发送附件到邮箱
- 计算机二级web知识点,计算机二级WEB考试主要考哪些内容?
- C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:
- 南卫理公会大学计算机科学,南卫理公会大学计算机科学硕士专业申请材料及课程设置...
- 【文件操作】c语言文件操作(上)
热门文章
- 计算机等级考试ppt怎么做,计算机等级考试PPT教学.ppt
- 2060显卡驱动最新版本_显卡驱动需更新,铭瑄RTX显卡受益大
- 第二十三章 宋桓公自行其是讨苦吃 齐桓公连克宋郑震东方
- uva 12304(圆的相关函数模板)
- 【神奇的bug】main方法无法执行
- 胃病患者饮食结构注意事项
- Excel模糊查找+数据透视
- 你有哪些“相见恨晚”的UE4学习资料?
- Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veraci
- 中文数字阿拉伯数字相互转换(Java版本)