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通讯相关推荐

  1. 加密芯片SPI通讯的调试

    SPI是串行外设接口(Serial Peripheral Interface)的缩写.是Motorola公司推出的一种同步串行接口技术,是一种高速的.全双工,同步的通信总线. SPI的通信原理很简单, ...

  2. 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    目录 一. GPIO 1. 什么是GPIO? 2. GPIO组成原理 3. GPIO工作原理 二. I2C 1. 什么是I2C? 2. I2C组成原理 3. I2C的特性 4. I2C的通讯模式 5. ...

  3. SPI通讯协议详解 基于STM32

    SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在 ADC.L ...

  4. 基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IC-MU磁绝对值编码器的SPI通讯和码盘数据处理 前言 一.硬件连接 二.STM32 cubmx配置模式 三.软件代码及思路 1.寄 ...

  5. Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解

    话不多说,直接入正题: 常见的OLED通常有两种样式,如下图所示,分别是4线和6线控制 本人几乎浏览了网上所有关于控制OLED模块的教程,并都经过了项目实测:大力推荐u8g2这个库函数来控制,文章末尾 ...

  6. 57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯

    57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯. 板子上面有电位器可电流设定或者485改电流设定. 最大电流支持4.5A,如果需要更大电流需要改元器件参数. 有启停和方向按键 ...

  7. STM32F103C8T6驱动6线OLED(SPI通讯)

    传送门:Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解 [点击进入] 一.0.96寸SSD1306原理图(默认为SPI) 二.OLED硬件介绍及控制方式 ...

  8. STM32Cube学习笔记-SPI通讯

    引言  使用STM32Cube开发东西最怕的就是写的代码太多,为什么呢?因为不会写,我深有体会.SPI通讯是一种常用的常用的通讯方式,同步.串行.同步代表着实时性好,串行代表着接线少,很多的设备愿意采 ...

  9. 串口RS232 RS485最本质的区别!-!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议!

    5分钟看懂!串口RS232 RS485最本质的区别!-4分钟看懂!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议,5分钟看懂! 一.5分钟看懂!串口RS232 RS485最本质的区别! 二 ...

最新文章

  1. SQL的主键和外键约束
  2. 他们是最懂数据的商家!智能品牌时代到来
  3. 荣耀x10max鸿蒙,黄石收购荣耀X10Max指纹键电池背光喇叭
  4. 阿里P8架构师谈:MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
  5. 媒体查询笔记、 @media
  6. 前端开发 css样式的简写
  7. #pragma once 和 #ifndef ... #define ... #endif 的区别
  8. 2022-03-28 术语MES、WMS
  9. 计算机组成原理题集,计算机组成原理试题集含答案
  10. Java经过的天数的计算公式_Java如何通过计算两个日期的时间差来算出天数
  11. 湖南广电台长吕焕斌:湖南电视台的新媒体发展战略
  12. 编程语言排行榜2021年3月
  13. 芯片PIC32MZ1024ECH100 (MCHP) -- 32位高性能单片机 up to 330 DMIPS
  14. 划分非独立同分布(Non-IID)数据集
  15. 道琼斯200万高危人群名单泄露,从AWS上
  16. 从零开始搭建智能客服
  17. 值得收藏的5个C++网站
  18. kali Linux单用户模式的退出方法
  19. WebAssembly 学习笔记
  20. 实用主义 | 如何定制化群发你的微信消息

热门文章

  1. 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理(转)
  2. ​​使用win7超级终端连接华为交换机并配置端口镜像
  3. Head First设计模式之备忘录模式
  4. 状态开关按钮(ToggleButton)及按钮(Swich)的使用
  5. 【JSP】jsp报错:Syntax error, insert } to complete MethodBody
  6. 将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释
  7. springboot忽略证书_SpringBoot获取resource下证书失败
  8. 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)
  9. 华为手机记事本导出_深夜浅谈怎样用一部手机做电影解说?
  10. javascript event