LPC1768的SPI通讯
SPI是一种全双工串行接口,可处理多个连接到指定总线上的主机和从机。在数据传输过程中总线上只能有一个主机和一个从机通信。在数据传输中,主机总是会向从机发送一帧8到16个位的数据,而从机也总会向主机发送一帧字节数据
使用代码如下
void SpiInit(SPI_SPEED speed)
{
u8 div=25000000/speed;
LPC_SC->PCONP |= (1 << 8);//打开SPI时钟
LPC_SC->PCONP |= (1<<15);//打开GPIO时钟
//sck
LPC_PINCON->PINSEL0 &= ~(0x03u<<30);
LPC_PINCON->PINSEL0 |= (0x03u<<30);
//csn
LPC_PINCON->PINSEL1 &= ~(0x03<<0);
// LPC_PINCON->PINMODE1 &= ~(0x03<<0);
// LPC_PINCON->PINMODE_OD0 &= ~(0x01<<16);
P0dir(16) = 1;
//miso
LPC_PINCON->PINSEL1 &= ~(0x03<<2);
LPC_PINCON->PINSEL1 |= (0x03<<2);
//mosi
LPC_PINCON->PINSEL1 &= ~(0x03<<4);
LPC_PINCON->PINSEL1 |= (0x03<<4);
SPI_CS_HIGH;
//spi接口初始化 每次8位数据 sck上升沿采样 sck高有效 主模式 禁止中断 msb高位在前
LPC_SPI->SPCR = (0<<BIT_ENABLE_POSITION)|(0<<CPHA_POSITION)|(1<<CPOL_POSITION)|(1<<MSTR_POSITION)\
|(0<LSBF_POSITION)|(0<<SPIE_POSITION)|(0x08<<BITS_POSITION);
if(div<8)div=8;
LPC_SPI->SPCCR=div;
}
u8 SpiRW(u8 writeData)
{
LPC_SPI->SPDR=writeData;
while((LPC_SPI->SPSR & 0x80)!=0x80);
writeData=(LPC_SPI->SPDR)&0xff;
return writeData;
}
void SpiSetSpeed(SPI_SPEED speed)
{
u8 div=25000000/speed;
if(div<8)div=8;
LPC_SPI->SPCCR=div;
}
void SpiSetSpeedHigh(void)
{
SpiSetSpeed(SPI_SPEED5);
}
void SpiSetSpeedLow(void)
{
SpiSetSpeed(SPI_SPEED1);
}
转载于:https://www.cnblogs.com/dengxiaojun/p/4338682.html
LPC1768的SPI通讯相关推荐
- 加密芯片SPI通讯的调试
SPI是串行外设接口(Serial Peripheral Interface)的缩写.是Motorola公司推出的一种同步串行接口技术,是一种高速的.全双工,同步的通信总线. SPI的通信原理很简单, ...
- 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理
目录 一. GPIO 1. 什么是GPIO? 2. GPIO组成原理 3. GPIO工作原理 二. I2C 1. 什么是I2C? 2. I2C组成原理 3. I2C的特性 4. I2C的通讯模式 5. ...
- SPI通讯协议详解 基于STM32
SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在 ADC.L ...
- 基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IC-MU磁绝对值编码器的SPI通讯和码盘数据处理 前言 一.硬件连接 二.STM32 cubmx配置模式 三.软件代码及思路 1.寄 ...
- Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解
话不多说,直接入正题: 常见的OLED通常有两种样式,如下图所示,分别是4线和6线控制 本人几乎浏览了网上所有关于控制OLED模块的教程,并都经过了项目实测:大力推荐u8g2这个库函数来控制,文章末尾 ...
- 57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯
57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯. 板子上面有电位器可电流设定或者485改电流设定. 最大电流支持4.5A,如果需要更大电流需要改元器件参数. 有启停和方向按键 ...
- STM32F103C8T6驱动6线OLED(SPI通讯)
传送门:Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解 [点击进入] 一.0.96寸SSD1306原理图(默认为SPI) 二.OLED硬件介绍及控制方式 ...
- STM32Cube学习笔记-SPI通讯
引言 使用STM32Cube开发东西最怕的就是写的代码太多,为什么呢?因为不会写,我深有体会.SPI通讯是一种常用的常用的通讯方式,同步.串行.同步代表着实时性好,串行代表着接线少,很多的设备愿意采 ...
- 串口RS232 RS485最本质的区别!-!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议!
5分钟看懂!串口RS232 RS485最本质的区别!-4分钟看懂!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议,5分钟看懂! 一.5分钟看懂!串口RS232 RS485最本质的区别! 二 ...
最新文章
- SQL的主键和外键约束
- 他们是最懂数据的商家!智能品牌时代到来
- 荣耀x10max鸿蒙,黄石收购荣耀X10Max指纹键电池背光喇叭
- 阿里P8架构师谈:MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
- 媒体查询笔记、 @media
- 前端开发 css样式的简写
- #pragma once 和 #ifndef ... #define ... #endif 的区别
- 2022-03-28 术语MES、WMS
- 计算机组成原理题集,计算机组成原理试题集含答案
- Java经过的天数的计算公式_Java如何通过计算两个日期的时间差来算出天数
- 湖南广电台长吕焕斌:湖南电视台的新媒体发展战略
- 编程语言排行榜2021年3月
- 芯片PIC32MZ1024ECH100 (MCHP) -- 32位高性能单片机 up to 330 DMIPS
- 划分非独立同分布(Non-IID)数据集
- 道琼斯200万高危人群名单泄露,从AWS上
- 从零开始搭建智能客服
- 值得收藏的5个C++网站
- kali Linux单用户模式的退出方法
- WebAssembly 学习笔记
- 实用主义 | 如何定制化群发你的微信消息
热门文章
- 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理(转)
- ​​使用win7超级终端连接华为交换机并配置端口镜像
- Head First设计模式之备忘录模式
- 状态开关按钮(ToggleButton)及按钮(Swich)的使用
- 【JSP】jsp报错:Syntax error, insert } to complete MethodBody
- 将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释
- springboot忽略证书_SpringBoot获取resource下证书失败
- 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)
- 华为手机记事本导出_深夜浅谈怎样用一部手机做电影解说?
- javascript event