NRF51822之IIC(MEMS_LIS2DH12)】的更多相关文章

在上篇介绍了OLED的II以写操作为主,没有进行读取操作.所以在现再补充读取的操作. 我在此以LIS2DH为例子 uint8_t temp; lis2dh_read_registers(LIS2DH_WHO_AM_I,&temp,); 我们现在操作的寄存器为who_am_i时序如下 好了现在贴上主要代码 #define MEMS_LIS2DH_ADDR (0x30U>>1) #define LIS2DH_WHO_AM_I 0x0F #define MEMS_TWI_TIMEOUT 50…
使用的工程为是基于sdk10工程 在将以nRF51_SDK_10.0.0_dc26b5e\examples\peripheral\twi_sensor作为模版 修改代码main.c #include <stdio.h> #include "boards.h" #include "app_util_platform.h" #include "app_error.h" #include "nrf_drv_twi.h"…
关于IIC总线的核心有以下几点: :时钟线高电平期间必须保持数据线不变. :时钟线低电平期间可以改变数据. :时钟线和数据线上都要接上拉电阻,以使总线不工作时,两根线的电平都处于高电平状态. :每个传输的字节后面需要由对方回送一个应答信号. 由上面可知,在时钟线为高电平的时候如果数据线改变,那么就是”不合法” 的.于是就刚好利用这种”不合法的”的跳变来作为数据 起始信号和停止信号. 于是规定: :时钟线为高电平时,数据线由高到低跳变为起始信号 :时钟线为高电平时,数据线有低到高跳变为 停止信号.…
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b…
IIC 通用文件,文件是在NRF51xx 芯片基础,keil 平台开发测试通过,后期修改为STM32F2xx系列的配置. 文件百度云盘链接 : https://pan.baidu.com/s/1AFxanwzrAViaubtERZMRsA 注意:在用于STM32Fx 系列时注意引脚读取函数的选择! 下面是示波器现实,IIC通讯读的操作. 理论基础: SCL为高,SDA发生变化,即为发生了特殊状态(ACK, NACK, START, STOP) SCL为低,SDA发生变化,即为数据端发生跳变,这个…
一.硬件准备             (1)开发板和软件参看 Nordic NRF51822 从零开始系列(一)开发环境的搭建             (2)mpu6050模块 二.前置知识             (1)IIC通信协议    (最好记住,以后会有很大用处的) 三.移植所需要的文件 原始文件和移植完成的文件             (1)MPU6050的DMP文件(本例程使用的是正点原子例程中分离出来的)                              (2)nrf_5…
首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platform模型,有些文章只是把代码移植到平台上调试测试下,并没有理清内部逻辑调用关系,所以觉得有必要把两种驱动模型阐述剖析清楚,本文阅读者必须以在单片机上调试过IIC总线为前提,能够分析从芯片datasheet和其工作原理和总线的基本操作,虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中…
1.建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的一致性),如下图所示.                                                                                          2.配置完RCC时钟,F429最高时钟频率是180M,另外要注意自己使用的外接晶振的频率: 3.下…
#include "Type.h" #include "IIC.h" #include "Delay.h" void I2C_Init(void) { GPIO_InitTypeDef GPIO_InitStructer; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructer.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3; //6--SC…
前言:  nRF51可以支持基于2.4G的互相通信.与NRF24LE1的通信.与NRF24LU1的通信.与NRF24L01的通信. 一.nRF51822基于2.4G和nRF51822通信 其中nRF51互相通信和之前用51操作nRF24L01很像,涉及到的只有几个核心的函数: nrf_esb_init---初始化ESB nrf_esb_enable---使能ESB nrf_esb_add_packet_to_tx_fifo---将数据送入发送队列 如果想知道发送是否成功等状态可以用: void…