GD32f303 驱动之SPI
注:
<1> SPI不存在在中断读写,SPI通信时序是读的同时写,写的同时读,读写不分离,所以没必要配置中断。
1、SPI初始化
/*******************************************************************************
* function name : SPI1_Init
* brief : SPI1 initialize
* param[in] : None
* param[out] : None
* retval : None
* attention : None
*******************************************************************************/
void SPI1_Init(void)
{spi_parameter_struct spi_init_s;rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_SPI1);rcu_periph_clock_enable(RCU_AF);/* SPI1_SCK(PB3), SPI1_MISO(PB4) and SPI1_MOSI(PB5) GPIO pin configuration */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_MAX, GPIO_PIN_3 | GPIO_PIN_5);gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_4);/* SPI0_CS(PB2) GPIO pin configuration */gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_MAX, GPIO_PIN_2);/* chip select invalid*/gpio_bit_set(GPIOB, GPIO_PIN_2);/* SPI1 parameter config */spi_init_s.trans_mode = SPI_TRANSMODE_FULLDUPLEX;spi_init_s.device_mode = SPI_MASTER;spi_init_s.frame_size = SPI_FRAMESIZE_8BIT;spi_init_s.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE; //mode3spi_init_s.nss = SPI_NSS_SOFT;spi_init_s.prescale = SPI_PSC_16; spi_init_s.endian = SPI_ENDIAN_MSB;spi_init(SPI1, &spi_init_s);/* enable SPI1 */spi_enable(SPI1);
}
2、SPI写
/*******************************************************************************
* Function Name : SPI_WR_byte
* Brief : SPI1 read/write byte
* Param[in] : byte
* Param[out] : none
* Retval : none
* Attention : none
*******************************************************************************/
uint8_t SPI_RW_byte (uint8_t byte)
{ /* loop while data register in not emplty */while (RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE));/* send byte through the SPI0 peripheral */spi_i2s_data_transmit(SPI1, byte);/* wait to receive a byte */while(RESET == spi_i2s_flag_get(SPI1, PI_FLAG_RBNE));/* return the byte read from the SPI bus */return (spi_i2s_data_receive(SPI1));
} /*******************************************************************************
* Function Name : SPIWrite
* Brief : SPIWrite
* Param[in] : byte
* Param[out] : none
* Retval : none
* Attention : none
*******************************************************************************/
void SPIWrite(UINT8 data)
{SPI_RW_byte(data);
}
3、SPI读
/*******************************************************************************
* Function Name : SPIRead
* Brief : SPIRead
* Param[in] : byte
* Param[out] : none
* Retval : none
* Attention : none
*******************************************************************************/
UINT8 SPIRead(void)
{UINT8 data;data = SPI_RW_byte(0);return (data);
}
GD32f303 驱动之SPI相关推荐
- linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx
Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...
- STM32F103系列_OLED屏幕(SSD1306、SSD1315驱动)SPI驱动【DMA】(高刷)
STM32F103系列_OLED屏幕(SSD1306.SSD1315驱动)SPI驱动[DMA](高刷) 一.SSD1306和SSD1315 二.电路原理图(SPI接法) 三.STM32_SPI 四.S ...
- STM32MP157驱动开发——SPI驱动
STM32MP157驱动开发--SPI驱动 一.简介 1.SPI介绍 2.STM32MP1 SPI介绍 3. ICM-20608 简介 4.Linux下的SPI框架 二.驱动开发 1)IO 的 pin ...
- linux spi屏驱动程序,65 linux spi设备驱动之spi LCD屏驱动
SPI的控制器驱动由平台设备与平台驱动来实现. 驱动后用spi_master对象来描述.在设备驱动中就可以通过函数spi_write, spi_read, spi_w8r16, spi_w8r8等函数 ...
- Linux spi驱动分析----SPI设备驱动(W25Q32BV)
转载地址:http://blog.chinaunix.net/uid-25445243-id-4026974.html 一.W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它 ...
- 以太网卡驱动程序移植linux,Linux下移植ENC424J600网卡驱动,SPI接口初始化的相关问题...
.chip_select]; if (devices.bus_num == 0) enable_spi0 = 1; else enable_spi1 = 1; 以下是初始化通讯接口 if (enabl ...
- 10.13、驱动开发 -- spi总线
SPI 英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM ...
- Linux设备驱动之SPI驱动
Linux下SPI驱动分成两部分:主机驱动和设备驱动. 主机驱动: 主机侧SPI控制器使用struct spi_master描述,该结构体中包含了SPI控制器的序号(很多SoC中存在多个SPI控制器) ...
- I2c驱动与SPI驱动
今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解. I2C和SPI是两种不同的通信协议. 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已,我们只要遵照这个 ...
最新文章
- 电信设备产品简介材料收集
- 向量程序C语言,一个有关向量与矩阵的实用计算器程序
- 离线安装minikube—1.10.1
- 有关机械手臂控制中的两个重要输入参数
- 11月14日,西安,听说有一节百度AI快车道课程在等你上车
- 17毫秒每帧!实时语义分割与深度估计
- Citrix 桌面云 XenApp_XenDesktop_7.15 部署系列(八)部署虚拟桌面及应用
- 如何自学3DMAX建模?
- 好用的局域网共享工具
- Excel技巧——从身份证号码里提取员工性别
- 《21天学通C++(第五版)》 [美] Jesse Liberty Bradley Jones著——个人学习笔记
- CMD批处理实现dot命令自动运行更新
- 关于软件测试的基础认知分享
- 《子夜秋歌》赏析-(李白明月姑娘之六)
- FPGA实现数字识别
- 6 种老而不死的编程语言!
- 司马谈《论六家要旨》品读
- OpenCV基础(26)使用 Python 和 OpenCV 顺时针排序坐标
- 电子商务之数据库分析(二)
- 还敢随便抄?Stack Overflow上最火这段代码有Bug!