01 2021 档案
摘要:恩智浦官方SDK中的裸机I2C驱动中所有函数列出如下,共计32个,其中主机相关函数17个,从机相关函数12个,剩余3个为使能和失能interrupt和I2C block(I2C_Enable实际也有失能I2C block的功能)。 1.I2C_DisableInterrupts 如下,我认为改写版本
阅读全文
摘要:尽量保持原文,但为了让摘要更简洁,个人做了小小的更改。 1.10-bit addressing allows 1024 additional slave addresses. 2.The High-speed mode allows an increase in the bit rate up to
阅读全文
摘要:源码如下。 个人总结: 1.I2DR寄存器的读 I2DR寄存器的读操作如下,它与while(size--)中的size无联系,让我一开始觉得I2DR里面的数据就是不变的嘛! *buf++ = base->I2DR;//I2C读数据 后来我查看了I.MX6ULL里面这样描述I2C的I2DR寄存器:“r
阅读全文
摘要:while(--i)和我们正常逻辑一样的:i=0,跳出循环。 while(i--)就比较特殊了,它在i=0的时候依旧执行一次,可以推测出来: 最后一次while是用的i=1这个条件来进行判断,然后再减一,使得i=0。也即 i-- 为“先引用再减一”
阅读全文
摘要:i2c_master_transfer函数,原作者左钟凯。可以借鉴一下。 1 /* 2 * @description : I2C数据传输,包括读和写 3 * @param - base: 要使用的IIC 4 * @param - xfer: 传输结构体 5 * @return : 传输结果,0 成功
阅读全文
摘要:https://blog.51cto.com/iamokay/2426525
阅读全文
摘要:1.join函数 2.addprefix函数(加相同前缀) 3.addsuffix函数(加相同后缀) 4.basename(提取文件名) 5.suffix函数(提取文件后缀) 6.notdir函数(提取指定目录下的文件名) 7.dir函数(提取目录) 8.subst函数(字符串替换) 9.patsu
阅读全文
摘要:由于I2C很重要,应用很广,所以认为有必要将I2C驱动的设计细节给一一“拎出来”,防止自己以后漏掉细节而导致通信失败!以下主要是基于I.MX6ULL的主机I2C驱动来总结的。 1.使用如下8个函数即可实现I2C通信 2.与I2C相关的5个16位寄存器 如下图按照驱动中对I2C寄存器的“动作频率”来排
阅读全文
摘要:基于I.MX6ULL的串口驱动 1.uart驱动 1 #include "bsp_uart.h" 2 #include "bsp_gpio.h" 3 4 5 6 /*初始化UART1,波特率为115200*/ 7 void uart_init(void) 8 { 9 /*初始化UART1的IO*/
阅读全文
摘要:以下为I2C读写时序的步骤细节: 下图源自AP3216C的手册,列出了如下四种I2C protocol。 根据如下的I2C的读写结构,可以看出来: ①用颜色标记出来的结构(起始信号,从机地址,传输方向,停止信号),均为主机发送。 ②Data和ACK(NACK)可由主机发送,也可由从机发送。
阅读全文
摘要:中断函数框架自己整理了一遍,大致如下,从上到下为函数的调用关系。其中GIC为Cortex-A内核的中断管理机构,全称是general interrupt controller。 1.中断初始化 2.外部中断驱动
阅读全文
摘要:函数对文件夹变量的引用细节: 经过patsubst,foreach函数处理,文件变量如下: Makefile: 从第14行开始,"/*.S"字段非注释,但是变了颜色,忽略颜色变化。 1 CROSS_COMPILE ?= arm-linux-gnueabihf- 2 TARGET ?= key 3 4
阅读全文
摘要:用了辅助性的release变量,不用release,烧写开发板,我的蜂鸣器会出现间歇性的声音,说明还是没有去除抖动。 1 int key_getvalue(void) 2 { 3 int ret = 0; 4 static unsigned char release = 1; /* 按键松开 */
阅读全文