unsigned char SPI_RW(unsigned char byte)

{

?? ?unsigned char bit_ctr;

?? ?for(bit_ctr=0;bit_ctr<8;bit_ctr++)

?? ?{

?? ??? ?NRF_MOSI=(byte&0x80); // MSB TO MOSI

?? ??? ?byte=(byte<<1);?? ?// shift next bit to MSB

?? ??? ?NRF_SCK=1;

?? ??? ?byte|=NRF_MISO;?? ???????? // capture current MISO bit

?? ??? ?NRF_SCK=0;

?? ?}

?? ?return byte;

}

上面是用单片机引脚模拟的SPI通信发送和接收函数。关于SPI,你首先需要知道,SPI通信是双向通信的,当你发送一个字节,就会收到一个字节。所以,在上面的函数中,你会看到,我们可以带进去一个字节,最后返回一个字节。

有些仔细的童鞋会发现,上面发送和接收用的字节变量,都是byte,会不会相互影响呢,比如,发送的字节还没有完全发送出去,已经开始把接收到的位与byte进行操作了。我们不妨用自己的大脑,当成单片机,模仿单片机运行一遍程序。例如,现在要用SPI发送数据0x0F,0x0F写成二进制即0000 1111,?NRF_MOSI=(byte&0x80); 这条语句,是把0x0F的最高位输出;byte=(byte<<1);这条语句,是把最高位输出以后,再把原来的字节左移1位,即变成了0001 1110;byte|=NRF_MISO;这条语句的作用是获取从机的MISO引脚状态,就是接收从机的数据,MISO不是0就是1,所以结果是0001 1110或上一个0或者1,我们发现,结果并不会影响字节的前7位,然后如此循环8遍。

利用spi发送接收信息c语言,SPI接收发送函数程序相关推荐

  1. 设置 Visual Studio 文件版权信息 - C语言零基础入门教程

    目录 一.手动修改原始代码模板 二.通过插件 Visual Assist 设置版权信息 1.安装插件 Visual Assist 2.打开 VS,找到 VAssistX 选项 3.设置模板内容 4.点 ...

  2. 【微信小程序系列】微信小程序简单的实现发送订阅信息

    [微信小程序系列]微信小程序简单的实现发送订阅信息 项目结构 两个云函数一个页面 获取模板 注:详细内容中的参数很重要,一会要在云函数里用 代码 app.js // app.js App({onLau ...

  3. c语言spi发送12位数据,【51单片机】普通I/O口模拟SPI口C语言程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...

  4. CANOE入门:CAPL语言实现诊断发送和接收

    目录 什么是诊断 CAPL诊断发送 CAPL接收 完整示例 什么是诊断 诊断,就是通过问和听的方式,也即发送和接收信号的方式,发送一条指定ID的CAN报文,ECU接收到后回应另一条指定ID的报文来确认 ...

  5. php发送指令给易语言,易语言发送信息代码数字指令编程整理

    控件选中并鼠标显示四向箭头: 控件.发送信息 (274, 61440, 0) 控件.发送信息 (274, 61450, 0) 控件最大化: 控件.发送信息 (274, 61488, 0) 参数2在61 ...

  6. STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程:收发同时进行】

    1:平台 STM32F413 + GD5F4(spi nand flash)(没开启DMA中断,读写操作NAND 都是单片机发起,所以知道什么时候读,什么时候写) 2: 问题(STM32 SPI+DM ...

  7. DBus glib 各数据类型接收与发送详解—C语言(3)

    DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...

  8. linux c语言 udp 接收和发送数据用同一个端口_网络编程基础入门及TCP,UDP

    1.网络编程入门 1.1 网络编程概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享 ...

  9. 蓝桥杯51单片机之串口通信发送接收信息【单片机开发初学者串口必会】

    文章目录 一.上位机发送信号控制单片机 1.显示对应的流水灯 2.显示对应数码管 3.控制数码管显示的数字 二.两机收发信息 一.上位机发送信号控制单片机 1.显示对应的流水灯 实现现串口通信接收上位 ...

最新文章

  1. 逐飞关于第15届智能车竞赛相关工作
  2. 不是你无法入门自然语言处理(NLP),而是你没找到正确的打开
  3. Java-基本运算符
  4. 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
  5. 工资低是浪费生命?俞敏洪:当你工资比同学少一半 生命已经浪费一半
  6. 计算机一级基础知识理论,计算机一级考试理论试题 第6部分 信息与计算机基础知识...
  7. html真实雾效果图,HTML5 Canvas图片上云雾弥漫驱散特效
  8. MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
  9. Service Manager流程,派BC_REPLY,唤醒FregServer流程,返回BR_TRANSACTION_COMPLETE,睡眠等待proc-gt;wait...
  10. PHP正则提取超链接地址及标题,PHP正则表达式提取超链接及其标题
  11. 关于Mac学习C语言通过vscode如何编译运行代码
  12. 关于this指向问题及改变this指向的方法
  13. php mongodb lookup,mongodb-在$lookup管道中使用$match$进行聚合
  14. 谷歌账号最后验证身份手机号无法使用
  15. 调侃腾讯和360的小段子
  16. PDN建立失败场景(二)
  17. 长春哪个学校可以学习计算机编程的,长春编程学习,长春学编程的学校,长春学编程自学好还是报班好 - IT教育频道...
  18. 计算机里的le是什么符号,在python中传递le或ge符号
  19. python内部的数据结构
  20. 如何给网站添加 OG 协议

热门文章

  1. 鸿蒙os 芯片制程,华为Mate50将如期发布,屏下镜头+鸿蒙OS,再见iPhone12
  2. PID控制器开发笔记之四:梯形积分PID控制器的实现
  3. [设计模式] ------ 原型模式(浅拷贝和深拷贝)
  4. zookeeper基础整理
  5. 现代软件工程 作业汇总
  6. 人山人海人立方 http://renlifang.msra.cn
  7. JAVA入门级教学之(final关键字)
  8. JAVA入门级教学之(while循环语句)
  9. 配置中心_Nacos做配置中心
  10. 【学习笔记】第二章——处理机调度的概念、层次、时机、切换过程 调度方式、调度算法的指标