GD32F303CCTC

使用PB12、PB13、PB14和PB15。分别是NSS、SCK、MISO和MOSI
配置代码,这里用作从机:

spi初始化函数

void spi_flash_init(void)
{spi_parameter_struct spi_init_struct;rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_SPI1);/* SPI1_SCK(PB13), SPI1_MISO(PB14) and SPI1_MOSI(PB15) GPIO pin configuration */gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_15);gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_13);/* SPI1_CS(PB12) GPIO pin configuration */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);/* chip select invalid*//* SPI1 parameter config */spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;spi_init_struct.device_mode          = SPI_SLAVE;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_HARD;spi_init_struct.prescale             = SPI_PSC_64;spi_init_struct.endian               = SPI_ENDIAN_MSB;spi_init(SPI1, &spi_init_struct);/* enable SPI1 */spi_enable(SPI1);spi_i2s_interrupt_enable(SPI1,SPI_I2S_INT_RBNE);nvic_irq_enable(SPI1_IRQn, 1, 0);
}

spi中断函数

void SPI1_IRQHandler()
{if(spi_i2s_interrupt_flag_get(SPI1,SPI_I2S_INT_FLAG_RBNE)==SET){count=spi_i2s_data_receive(SPI1);//举一反三,例子只抓一个数据。}
}

GD32F407VKT6

这里作为主机来用

void spiInit(void)
{   spi_parameter_struct spi_init_struct;
//  spi_i2s_deinit(SPIx);rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_SPI1);/* SPI0_CLK(PA5), SPI0_MISO(PA6), SPI0_MOSI(PA7) GPIO pin configuration */gpio_af_set(GPIOB, GPIO_AF_5, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15); //MISO 应该配置为输入模式这里配置却没错,因为复用模式。。/* SPI0_CS(PA4) GPIO pin configuration */gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_12);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;spi_init_struct.device_mode = SPI_MASTER;spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;spi_init_struct.frame_size = SPI_FRAMESIZE_16BIT;spi_init_struct.nss = SPI_NSS_SOFT;spi_init_struct.endian = SPI_ENDIAN_MSB;spi_init_struct.prescale = SPI_PSC_32;spi_init(SPI1,&spi_init_struct);spi_enable(SPI1);//    spi_i2s_interrupt_enable(SPIx,SPI_I2S_INT_RBNE);
//  nvic_irq_enable(SPIx_IQR, 1, 0);}

采用轮询的方法发送一个字节0x69.


void spiOled(void)
{SPI_FLASH_CS_LOW() ;spiData=spiSendByte(0x69);SPI_FLASH_CS_HIGH();
}

以上内容有点粗糙想要历程可以私聊我。

GD32F303CCT6与GD32F407VKTC spi 主从通信相关推荐

  1. STM32双机SPI全双工通信

    (基于STM32F407的SPI全双工通信时序不同步问题!!) 首先吐槽一波,调一个星期的SPI,始终没有很好的效果. 网上有很多SPI主从通信的例子,但是两片STM32单片机进行通信,基本很少,就算 ...

  2. 【嵌入式】STM32实现SPI双机通信的一些细节(2)片选总结

    [嵌入式]STM32实现SPI双机通信的一些细节(2)SPI软硬件片选总结 SPI片选总结 坑爹的手册示意图 理想中的硬件片选 主机软件片选就对了 从机硬件片选 从机软件片选 代码 主机软件片选SPI ...

  3. 两块STM32之间 SPI DMA通信

    @[两块STM32之间 SPI DMA通信] 这里讲的是两块STM32F407板子的互相通讯,折腾了3天,终于比较清楚了,特此记录. 两块板子互相通讯,除了SPI的接线,肯定还有其他信号线,必须注意这 ...

  4. 张高兴的 .NET Core IoT 入门指南:(四)使用 SPI 进行通信

    张高兴的 .NET Core IoT 入门指南:(四)使用 SPI 进行通信 什么是 SPI 和上一篇文章的 I2C 总线一样,SPI(Serial Peripheral Interface,串行外设 ...

  5. 张高兴的.NET Core IoT 入门指南:(四)使用 SPI 进行通信

    什么是 SPI 和上一篇文章的 I2C 总线一样,SPI(Serial Peripheral Interface,串行外设接口)也是设备与设备间通信方式的一种.SPI 是一种全双工(数据可以两个方向同 ...

  6. 蓝牙BLE芯片PHY6222之I2C主从通信

    蓝牙BLE芯片PHY6222之I2C主从通信 开发环境 I2C主机 I2C从机 注意事项 开发环境 1.PHY6222开发板 2.SDK版本以及路径:SDK\release_bbb_sdk-PHY62 ...

  7. 【BLE】nrf connect配置为服务端进行蓝牙主从通信实验

    需求背景 在进行BLE模块调试时,我们通常配置nrf connect APP作为蓝牙客户端,扫描蓝牙开发板的广播,进行连接. 然而当进行蓝牙主从通信实验时,为了调试主机端程序,如果手上只有一块开发板, ...

  8. 基于 Kubernetes 的 Jenkins 主从通信异常解决

    基于 Kubernetes 的 Jenkins 主从通信异常解决 问题描述 基于 Kubernetes 部署 Jenkins 动态 slave 后,运行 Jenkins Job 会抛java.nio. ...

  9. 三菱FX5U通过简易PLC间链接功能实现与FX5U或FX3U主从通信的具体方法(图文)

    三菱FX5U通过简易PLC间链接功能实现与FX5U主从通信的具体方法 简易PLC间链接功能,就是在最多8台FX5U或者FX3U系列PLC之间,通过RS485通信连接,进行软元件相互链接的功能.  根 ...

最新文章

  1. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树
  2. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)
  3. apache配置网络驱动器
  4. C语言中extern的用法--转
  5. 又一低代码平台火了!15 分钟小白轻松开发在线课堂,人人都是开发者时代来了?
  6. python unique函数_每30秒学会一个Python小技巧,GitHub星数4600+
  7. Spring+Netty4实现的简单通信框架
  8. Instantiation of Chaincode using Fabric Node manifest for hyperledger/fabric-ccenv:latest not found
  9. 大连IT产业解析(1布局篇)
  10. excel使用技巧手记
  11. cs5计算机丢失msvcp71,win7系统msvcp71.dll丢失怎么修复_win7计算机丢失msvcp120dll修复方法-win7之家...
  12. 阿根廷-10月摩托车行业实现正增长(+23.4%)
  13. 博客做外链不收录怎么办,如何利用博客做外链
  14. iPhone7 plus分辨率行不行
  15. 已解决ModuleNotFoundError: No module named ‘frontend‘
  16. 【杂谈】当你在凝视深渊的时候,深渊也正在凝视着你
  17. 做一个平台需要什么条件?
  18. 螺纹检测案例-螺距测量-大径小径检测-螺牙检测
  19. IDEA中:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
  20. Not live in vain——Leo关于生与死的感悟

热门文章

  1. python购物车简单小程序
  2. 2022年中职组网络安全国赛A模块解析第二套
  3. 第一批千万5G手机凉凉之后,第二批近3亿5G手机可能又要凉了,需要买5G手机的请等等...
  4. How Apache Zeppelin runs a paragraph
  5. 调用织梦DedeCMS当前栏目名称和栏目链接地址的方法
  6. Firefox使用技巧
  7. CAD文件转换为SVG文件
  8. Currency Translation in Bex Query Variable 2
  9. Linux学习入门: shell脚本常用命令汇总
  10. 锂电池电压和电量的关系