侵权投诉

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

STM32: 采用IIC硬件时序读写AT24C08

DS小龙哥-嵌入式技术 ? 来源:DS小龙哥-嵌入式技术 ? 作者:DS小龙哥-嵌入式技 ? 2022-03-16 09:31 ? 次阅读

?

一、环境介绍

编程软件: keil5

操作系统: win10

MCU型号: STM32F103ZET6

STM32编程方式: 寄存器开发 (方便程序移植到其他单片机)

IIC总线:STM32本身支持IIC硬件时序的,上篇文章已经介绍了采用IIC模拟时序读写AT24C02,这篇文章介绍STM32的硬件IIC配置方法,并读写AT24C08。

文章地址:https://xiaolong.blog.csdn.net/article/details/117586108

模拟时序更加方便移植到其他单片机,通用性更高,不分MCU;硬件时序效率更高,每个MCU配置方法不同,依赖硬件本身支持。

器件型号: 采用AT24C08 EEPROM存储芯片

二、AT24C08存储芯片介绍

2.1 芯片功能特性介绍

AT24C08 是串行CMOS类型的EEPROM存储芯片,AT24C0x这个系列包含了AT24C01、AT24C02、AT24C04、AT24C08、AT24C16这些具体的芯片型号。

他们容量分别是:1K (128 x 8)、2K (256 x 8)、8K (1024 x 8)、16K (2048 x 8) ,其中的8表示8位(bit)

它们的管脚功能、封装特点如下:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

芯片功能描述:

AT24C08系列支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器;数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式。

芯片特性介绍:

1. 低压和标准电压运行
–2.7(VCC=2.7伏至5.5伏)
–1.8(VCC=1.8伏至5.5伏)

2. 两线串行接口(SDA、SCL)

3. 有用于硬件数据保护的写保护引脚

4. 自定时写入周期(5毫秒~10毫秒),因为内部有页缓冲区,向AT24C0x写入数据之后,还需要等待AT24C0x将缓冲区数据写入到内部EEPROM区域.

5. 数据保存可达100年

6. 100万次擦写周期

7. 高数据传送速率为400KHz、低速100KHZ和IIC总线兼容。 100 kHz(1.8V)和400 kHz(2.7V、5V)

8. 8字节页写缓冲区
这个缓冲区大小与芯片具体型号有关: 8字节页(1K、2K)、16字节页(4K、8K、16K)

2.2 芯片设备地址介绍

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

因为IIC协议规定,每次传递数据都是按8个字节传输的,AT24C08是1024字节,地址的选择上与AT24C02有所区别;

IIC设备的标准地址位是7位。上面这个图里AT24C08的1010是芯片内部固定值,A2 是硬件引脚、由硬件决定电平;P1、P0是空间存储块选择,每个存储块大小是256字节,寻址范围是0~255,AT24C08相当于是4块AT24C02的构造;最后一位是读/写位(1是读,0是写),读写位不算在地址位里,但是根据IIC的时序顺序,在操作设备前,都需要先发送7位地址,再发送1位读写位,才能启动对芯片的操作,我们在写模拟时序为了方便统一写for循环,按字节发送,所以一般都是将7地址位与1位读写位拼在一起,组合成1个字节,方便按字节传输数据。

我现在使用的开发板上AT24C08的原理图是这样的:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

那么这个AT24C08的标准设备地址分别是:

第一块区域: 0x50(十六进制),对应的二进制就是: 1010000

第二块区域: 0x51(十六进制),对应的二进制就是: 1010001

第三块区域: 0x52(十六进制),对应的二进制就是: 1010010

第四块区域: 0x53(十六进制),对应的二进制就是: 1010011

如果将读写位组合在一起,读权限的设备地址:

第一块区域: 0xA1(十六进制),对应的二进制就是: 10100001

第二块区域: 0xA3(十六进制),对应的二进制就是: 10100011

第三块区域: 0xA5(十六进制),对应的二进制就是: 10100101

第四块区域: 0xA7(十六进制),对应的二进制就是: 10100111

如果将读写位组合在一起,写权限的设备地址:

第一块区域: 0xA0(十六进制),对应的二进制就是: 10100000

第二块区域: 0xA2(十六进制),对应的二进制就是: 10100010

第三块区域: 0xA4(十六进制),对应的二进制就是: 10100100

第四块区域: 0xA6(十六进制),对应的二进制就是: 10100110

2.3 对AT24C08 按字节写数据的指令流程(时序)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

详细解释:

1. 先发送起始信号

2. 发送设备地址(写权限)

3. 等待AT24C08应答、低电平有效

4. 发送存储地址、AT24C08内部一共有256个字节空间,寻址是从0开始的,范围是(0~255);发送这个存储器地址就是告诉AT24C08接下来的数据改存储到哪个地方。

5.等待AT24C08应答、低电平有效

6. 发送一个字节的数据,这个数据就是想存储到AT24C08里保存的数据。

7.等待AT24C08应答、低电平有效

8. 发送停止信号

2.3 对AT24C08 按页写数据的指令流程(时序)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

详细解释:

1. 先发送起始信号

2. 发送设备地址(写权限)

3. 等待AT24C08应答、低电平有效

4. 发送存储地址、AT24C08内部一共有256个字节空间,寻址是从0开始的,范围是(0~255);发送这个存储器地址就是告诉AT24C08接下来的数据改存储到哪个地方。

5.等待AT24C08应答、低电平有效

6. 可以循环发送8个字节的数据,这些数据就是想存储到AT24C08里保存的数据。

AT24C08的页缓冲区是16个字节,所有这里的循环最多也只能发送16个字节,多发送的字节会将前面的覆盖掉。

需要注意的地方: 这个页缓冲区的寻址也是从0开始,比如: 0~15算第1页,16~32算第2页......依次类推。 如果现在写数据的起始地址是3,那么这一页只剩下13个字节可以写;并不是说从哪里都可以循环写16个字节。

详细流程: 这里程序里一般使用for循环实现

(1). 发送字节1

(2). 等待AT24C08应答,低电平有效

(3). 发送字节2

(4).等待AT24C08应答,低电平有效

.........

最多8次.

7.等待AT24C08应答、低电平有效

8. 发送停止信号

2.4 从AT24C08任意地址读任意字节数据(时序)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

AT24C08支持当前地址读、任意地址读,最常用的还是任意地址读,因为可以指定读取数据的地址,比较灵活,上面这个指定时序图就是任意地址读。

详细解释:

1. 先发送起始信号

2. 发送设备地址(写权限)

3. 等待AT24C08应答、低电平有效

4. 发送存储地址、AT24C08内部一共有2048个字节空间,寻址是从0开始的,范围是(0~1024);发送这个存储器地址就是告诉AT24C08接下来应该返回那个地址的数据给单片机。

5.等待AT24C08应答、低电平有效

6. 重新发送起始信号(切换读写模式)

7.发送设备地址(读权限)

8.等待AT24C08应答、低电平有效

9. 循环读取数据: 接收AT24C08返回的数据.

读数据没有字节限制,可以第1个字节、也可以连续将整个芯片读完。

10. 发送非应答(高电平有效)

11. 发送停止信号

三、IIC总线介绍

2.1 IIC总线简介

I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。

I2C 总线通过串行数据(SDA)线和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别,而且都可以作为一个发送器或接收器(由器件的功能决定)。

I2C有四种工作模式:
1.主机发送
2.主机接收
3.从机发送
4.从机接收

I2C总线只用两根线:串行数据SDA(Serial Data)、串行时钟SCL(Serial Clock)。

总线必须由主机(通常为微控制器)控制,主机产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。

SDA线上的数据状态仅在SCL为低电平的期间才能改变。

2.2 IIC总线上的设备连接图

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。

其中上拉电阻范围是4.7K~100K。

2.3I2C总线特征

I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个从设备都会对应一个唯一的地址(可以从I2C器件的数据手册得知)。主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。

1. 总线上能挂接的器件数量
I2C总线上可挂接的设备数量受总线的最大电容400pF 限制,如果所挂接的是相同型号的器件,则还受器件地址的限制。
一般I2C设备地址是7位地址(也有10位),地址分成两部分:芯片固化地址(生产芯片时候哪些接地,哪些接电源,已经固定),可编程地址(引出IO口,由硬件设备决定)。
例如: 某一个器件是7 位地址,其中10101 xxx 高4位出厂时候固定了,低3位可以由设计者决定。
则一条I2C总线上只能挂该种器件最少8个。
如果7位地址都可以编程,那理论上就可以达到128个器件,但实际中不会挂载这么多。

2. 总线速度传输速度:
I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。一般通过I2C总线接口可编程时钟来实现传输速率的调整。

3. 总线数据长度
I2C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。

2.4 I2C总线协议基本时序信号

空闲状态:SCL和SDA都保持着高电平。

起始条件:总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平期间而SDA由高到低的跳变,表示产生一个起始条件。在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线。

停止条件:当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。

答应信号:每个字节传输完成后的下一个时钟信号,在SCL高电平期间,SDA为低,则表示一个应答信号。

非答应信号:每个字节传输完成后的下一个时钟信号,在SCL高电平期间,SDA为高,则表示一个应答信号。应答信号或非应答信号是由接收器发出的,发送器则是检测这个信号(发送器,接收器可以从设备也可以主设备)。

注意:起始和结束信号总是由主设备产生。

2.5 起始信号与停止信号

起始信号就是: 时钟线SCL处于高电平的时候,数据线SDA由高电平变为低电平的过程。SCL=1;SDA=1;SDA=0;

停止信号就是: 时钟线SCL处于低电平的时候, 数据线SDA由低电平变为高电平的过程。SCL=1;SDA=0;SDA=1;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.6 应答信号

数据位的第9位就时应答位。 读取应答位的流程和读取数据位是一样的。示例: SCL=0;SCL=1;ACK=SDA; 这个ACK就是读取的应答状态。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.7 数据位传输时序

通过时序图了解到,SCL处于高电平的时候数据稳定,SCL处于低电平的时候数据不稳定。

那么对于写一位数据(STM32--->AT24C08):SCL=0;SDA=data;SCL=1;

那么对于读一位数据(STM32<-----AT24C08):?SCL=0;SCL=1;data=SDA;??

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.8 总线时序

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

四、IIC总线时序代码、AT24C08读写代码

在调试IIC模拟时序的时候,可以在淘宝上买一个24M的USB逻辑分析仪,时序出现问题,使用逻辑分析仪一分析就可以快速找到问题。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

完整的工程源码下载地址,下载即可编译运行测试(包含了模拟IIC时序、STM32硬件IIC时序分别驱动AT24C02和AT24C08): https://download.csdn.net/download/xiaolong1126626497/19399945

4.1 iic.c 这是STM32的IIC硬件时序完整代码

/*
函数功能: 初始化IIC总线
硬件连接: 
				SCL---PB6
				SDA---PB7
*/
void IIC_Init(void)
{
	 /*1. 时钟配置*/
	 RCC->APB2ENR|=1<<3; //PB

 	 /*2. GPIO口模式配置*/
	 GPIOB->CRL&=0x00FFFFFF;
	 GPIOB->CRL|=0xFF000000; //复用开漏输出
	 GPIOB->ODR|=0x3<<6;
		
	 /*3. GPIO口时钟配置(顺序不能错)*/
	 RCC->APB1ENR|=1<<21; //I2C1时钟
	 RCC->APB1RSTR|=1<<21; //开启复位时钟
	 RCC->APB1RSTR&=~(1<<21);//关闭复位时钟
	
	 /*4. 配置IIC的核心寄存器*/
	 I2C1->CR2=0x24<<0;  //配置主机频率为36MHZ
	 I2C1->CCR|=0x2D<<0; //配置主机频率是400KHZ
	 I2C1->CR1|=1<<0;    //开启IIC模块
	
	/*
	CCR=主机时钟频率/2/IIC总线的频率
	45=36MHZ/2/400KHZ  ---0x2D
	*/
}


/*
函数功能: 发送起始信号
当时钟线为高电平的时候,数据线由高电平变为低电平的过程
*/
void IIC_SendStart(void)
{
	I2C1->CR1|=1<<8; //产生起始信号
	while(!(I2C1->SR1&1<<0)){} //等待起始信号完成
	I2C1->SR1=0; //清除状态位
}

/*
函数功能: 停止信号
当时钟线为高电平的时候,数据线由低电平变为高电平的过程
*/
void IIC_SendStop(void)
{
		I2C1->CR1|=1<<9;
}

/*
函数功能: 发送地址数据
*/
void IIC_SendAddr(u8 addr)
{
	u32 s1,s2;
	I2C1->DR=addr; //发送数据
	while(1)
	{
			s1=I2C1->SR1;
			s2=I2C1->SR2;
		  if(s1&1<<1) //判断地址有没有发送成功
			{
					break;
			}
	}
}

/*
函数功能: 发送数据
*/
void IIC_SendOneByte(u8 addr)
{
	u32 s1,s2;
	I2C1->DR=addr; //发送数据
	while(1)
	{
			s1=I2C1->SR1;
			s2=I2C1->SR2;
			if(s1&1<<2) //判断数据有没有发送成功
			{
					break;
			}
	}
}

/*
函数功能: 接收一个字节数据
*/
u8 IIC_RecvOneByte(void)
{
	u8 data=0;
	I2C1->CR1|=1<<10; //使能应答
	while(!(I2C1->SR1&1<<6)){} //等待数据
	data=I2C1->DR;
	I2C1->CR1&=~(1<<10); //关闭应答使能
	return data;
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

4.2 AT24C08.c 这是AT24C08完整的读写代码

*
函数功能: 写一个字节
函数参数:
	u8 addr 数据的位置(0~1023)
	u8 data 数据范围(0~255)
*/
void AT24C08_WriteOneByte(u16 addr,u8 data)
{
    u8 read_device_addr=AT24C08_READ_ADDR;
	u8 write_device_addr=AT24C08_WRITE_ADDR;
    if(addr<256*1) //第一个块
    {
        write_device_addr|=0x0<<1;
        read_device_addr|=0x0<<1;
    }
    else if(addr<256*2) //第二个块
    {
        write_device_addr|=0x1<<1;
        read_device_addr|=0x1<<1;
    }
    else if(addr<256*3) //第三个块
    {
        write_device_addr|=0x2<<1;
        read_device_addr|=0x2<<1;
    }
    else if(addr<256*4) //第四个块
    {
        write_device_addr|=0x3<<1;
        read_device_addr|=0x3<<1;
    }
    addr=addr%256; //得到地址范围

    
    IIC_SendStart();//起始信号
    IIC_SendAddr(write_device_addr);//发送设备地址
    IIC_SendOneByte(addr); //数据存放的地址
    IIC_SendOneByte(data); //发送将要存放的数据
    IIC_SendStop(); //停止信号
    DelayMs(10); //等待写
}


/*
函数功能: 读一个字节
函数参数:
	u8 addr 数据的位置(0~1023)
返回值: 读到的数据
*/
u8 AT24C08_ReadOneByte(u16 addr)
{
    u8 data=0;
    u8 read_device_addr=AT24C08_READ_ADDR;
	u8 write_device_addr=AT24C08_WRITE_ADDR;
    if(addr<256*1) //第一个块
    {
        write_device_addr|=0x0<<1;
        read_device_addr|=0x0<<1;
    }
    else if(addr<256*2) //第二个块
    {
        write_device_addr|=0x1<<1;
        read_device_addr|=0x1<<1;
    }
    else if(addr<256*3) //第三个块
    {
        write_device_addr|=0x2<<1;
        read_device_addr|=0x2<<1;
    }
    else if(addr<256*4) //第四个块
    {
        write_device_addr|=0x3<<1;
        read_device_addr|=0x3<<1;
    }
    addr=addr%256; //得到地址范围

    IIC_SendStart();//起始信号
    IIC_SendAddr(write_device_addr);//发送设备地址
    IIC_SendOneByte(addr); //将要读取数据的地址
    IIC_SendStart();//起始信号
    IIC_SendAddr(read_device_addr);//发送设备地址
    data=IIC_RecvOneByte();//读取数据
    IIC_SendStop(); //停止信号
    return data;
}


/*
函数功能: 从指定位置读取指定长度的数据
函数参数:
	u16 addr 数据的位置(0~1023)
	u16 len 读取的长度
	u8 *buffer 存放读取的数据
返回值: 读到的数据
*/
void AT24C08_ReadByte(u16 addr,u16 len,u8 *buffer)
{
	 u16 i=0;
	IIC_SendStart();//起始信号
	IIC_SendAddr(AT24C08_WRITE_ADDR);//发送设备地址
	IIC_SendOneByte(addr); //将要读取数据的地址	
	IIC_SendStart();//起始信号
	IIC_SendAddr(AT24C08_READ_ADDR);//发送设备地址
	
	for(i=0;ilen) //判断当前页剩余的字节空间是否够写
		{
				page_byte=len; //表示一次性可以写完
		}
		while(1)
		{
				AT24C08_PageWrite(addr,page_byte,buffer); //写一页
				if(page_byte==len)break; //写完了
				buffer+=page_byte; //指针偏移
				addr+=page_byte;//地址偏移
				len-=page_byte;//得到剩余没有写完的长度
				if(len>16)page_byte=16;
				else page_byte=len; //一次可以写完
		}
};i++)>
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

4.3 main.c 这是AT24C08测试代码

#include "stm32f10x.h"
#include "beep.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include 
#include 
#include "exti.h"
#include "timer.h"
#include "rtc.h"
#include "adc.h"
#include "ds18b20.h"
#include "ble.h"
#include "esp8266.h"
#include "wdg.h"
#include "oled.h"
#include "rfid_rc522.h"
#include "infrared.h"
#include "iic.h"
#include "at24c08.h"

u8 buff_tx[50]="1234567890";
u8 buff_rx[50];
u8 data=88;
u8 data2;
int main()
{   
    u8 key;
    LED_Init();
    KEY_Init();
    BEEP_Init();
    TIM1_Init(72,20000); //辅助串口1接收,超时时间为20ms
    USART_X_Init(USART1,72,115200);

    IIC_Init(); //IIC总线初始化
    printf("usart1 ok\n");

    while(1)
    {
        key=KEY_Scanf();
        if(key)
        {
            //AT24C08_WriteByte(100,50,buff_tx);
            //AT24C08_ReadByte(100,50,buff_rx);
            //printf("buff_rx=%s\n",buff_rx);

               //测试第0块
//            data=AT24C08_ReadOneByte(0);
//            AT24C08_WriteOneByte(0,data+1);
//            printf("data=%d\n",data);
               //测试第1块
//            data=AT24C08_ReadOneByte(300);
//            AT24C08_WriteOneByte(300,data+1);
//            printf("data=%d\n",data);
               //测试第2块
//            data=AT24C08_ReadOneByte(600);
//            AT24C08_WriteOneByte(600,data+1);
//            printf("data=%d\n",data);
               //测试第3块
             data=AT24C08_ReadOneByte(900);
             AT24C08_WriteOneByte(900,data+1);
             printf("data=%d\n",data);
        }
    }
}

串口调试助手源码下载地址:QT应用编程: 开发串口调试助手_DS小龙哥的博客-CSDN博客

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?


审核编辑:汤梓红

?

收藏 人收藏

    评论

    相关推荐

    基于兆易创新GD32F303系列MCU

    前 言 便携式移动储能系统是一种安全、便携、稳定、环保的小型储能系统,可以为您远离室内时提供便携的可....
    的头像 GD32MCU 发表于 03-19 14:30 ? 28次 阅读

    瑞萨电子推出SIL3认证解决方案

    新闻快讯 全球半导体解决方案供应商瑞萨电子集团(TSE:6723)宣布,为其RA产品家族微控制器提供....
    的头像 瑞萨电子 发表于 03-19 11:02 ? 65次 阅读

    全志T507核心板常见问题解析

    本文硬件平台采用全志T507四核车规级处理器设计核心板,本文整理在使用飞凌嵌入式T507产品过程种,....
    发表于 03-18 16:41 ? 8次 阅读
    全志T507核心板常见问题解析

    LinkWAN vCPE远程办公解决方案

    疫情瞬息万变的当下,居家办公,远程接入,随时随地接入已成为办公的常态。一方面,如何防疫?居家办公的隔....
    发表于 03-18 16:20 ? 2次 阅读

    如何用运放来实现过零检测电路

    对于家电行业的硬件工程师来说,对过零检测电路一定很熟悉,因为在驱动晶闸管时,我们需要从220V交流信....
    的头像 硬件那点事儿 发表于 03-18 16:09 ? 1109次 阅读
    如何用运放来实现过零检测电路

    航顺SoC再次通过AEC车规认证并完成ISO 26262 2022年度签约

    热烈祝贺:航顺车规级SoC HK32AUTO39A家族再次通过AEC-Q100认证且大批量应用于各大....
    发表于 03-18 15:47 ? 197次 阅读
    航顺SoC再次通过AEC车规认证并完成ISO 26262 2022年度签约

    使用RTThread studio 开发stm32F103VCt6时遇到Xshell无法输入指令的问题

    使用RTThread studio 开发stm32F103VCt6 进行ota升级验证,遇到几个问题: 1.使用Xshell无法输入指令,尝试安装多个版本...
    发表于 03-18 15:09 ? 2883次 阅读
    使用RTThread studio 开发stm32F103VCt6时遇到Xshell无法输入指令的问题

    DS70000系列数字示波器的产品特点

    DS70000系列数字示波器是RIGOL自主研发的第七代数字示波器,充分发挥了RIGOL设计的“凤凰....
    发表于 03-18 14:04 ? 4次 阅读

    移植VMK180 TRD的PetaLinux工程

    所有工具和参考设计使用2021.2。X86编译主机的操作系统是Ubuntu 18.04.6 LTS。....
    的头像 XILINX开发者社区 发表于 03-18 13:43 ? 473次 阅读

    安谋科技XPU战略落地智能汽车产业,芯驰科技加入战略合作

    安谋科技(中国)有限公司(以下简称“安谋科技”)与国内领先的车规芯片企业芯驰科技达成战略合作伙伴关系....
    发表于 03-18 11:19 ? 446次 阅读

    华为商城将全场景智慧生活带入千家万户

    3月18日,华为商城正式迎来了10周年生日。十年砺剑,只争朝夕,华为商城不断升级迭代,在品牌、产品和....
    发表于 03-18 10:33 ? 8次 阅读

    基于MSP430G MCU的电动牙刷方案

    本设计采用内置LDO的低压H桥马达驱动器,一个超低功耗MCU,通过2-5.5V范围输入实现了一个长寿....
    发表于 03-18 09:46 ? 4次 阅读
    基于MSP430G MCU的电动牙刷方案

    STM32+ESP8266连接腾讯IOT微信小程序一键配网

    次我以智能锁为产品模型,在腾讯物联网平台创建一个设备,使用STM32F103系统板+ESP8266+....
    的头像 DS小龙哥-嵌入式技术 发表于 03-18 09:20 ? 1123次 阅读
    STM32+ESP8266连接腾讯IOT微信小程序一键配网

    四维图新旗下杰发科技首款功能安全MCU–AC7840x提前回片

    近日,四维图新旗下杰发科技首款功能安全MCU–AC7840x提前回片,并成功启动点亮。AC7840x....
    的头像 四维图新NavInfo 发表于 03-18 08:59 ? 160次 阅读

    超高精度磁致伸缩液位仪技术研究

    本文研究采用的磁致伸缩液位传感器具备高可靠性、高精度、易操作性、安全性出色、自动化程度高等特点,在波....
    发表于 03-18 08:13 ? 8次 阅读

    如何攻克国产MCU高可靠性能难关

    根据IC Insights报告,2021年全球MCU市场总销售额破190亿美元,而中国市场增速远远领....
    的头像 科技新思路 发表于 03-17 14:49 ? 217次 阅读

    大联大世平集团推出基于NXP产品的汽车通用评估板方案

    大联大控股宣布,其旗下世平推出基于恩智浦(NXP)S32K1xx系列的汽车通用评估板方案。
    发表于 03-17 14:47 ? 961次 阅读
    大联大世平集团推出基于NXP产品的汽车通用评估板方案

    32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库

     本手册介绍了32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库。
    发表于 03-17 14:42 ? 11次 阅读

    HOLTEK推出触控式RF发射器MCU_科士达充电桩获中国充电设施行业十大创新品牌

    Holtek推出全新触控式Sub-1GHz OOK/FSK RF发射器Flash MCU BC66F....
    的头像 电子魔法师 发表于 03-17 11:38 ? 418次 阅读

    采用恩智浦应用软件包快速启动产品开发

    恩智浦基于ML的系统状态监测应用软件包(App SW Pack)为快速开发此类复杂应用提供了量产源代....
    发表于 03-17 11:26 ? 831次 阅读
    采用恩智浦应用软件包快速启动产品开发

    单身girl自学硬件的第一天…

    前几天发了一篇求助贴:求大佬帮我指条明路能助我快速入门电子领域。帖子是个好帖子,怎么说也大一万人看,但怎么就没人看看我的...
    发表于 03-17 11:08 ? 611次 阅读
    单身girl自学硬件的第一天…

    STM32中CAN总线接口发送和接收数据

    CAN物理层的形式主要分为闭环总线及开环总线网络两种,一个适合于高速通讯,一个适合于远距离通讯。CA....
    的头像 MCU开发加油站 发表于 03-17 11:00 ? 154次 阅读

    STM32G0复位后死机

    有客户反映,STM32G071RBT6 在使用 STM32CubeProgrammer 烧录完程序后....
    的头像 STM32单片机 发表于 03-17 10:56 ? 108次 阅读

    怎样使用SEGGER Embedded Studio去开发一种RT-Thread操作系统呢

    本文所采用MCU为stm32f429IG,RT-thread版本为4.0.2,SES版本为4.52c 下载RT-Thread源码 根据自己的操作系统,选...
    发表于 03-17 09:57 ? 1263次 阅读

    基于CPK-RA2L1评估板和e2 studio开发环境实现呼吸灯效果

    2月份起,安富利的行业资深FAE不定期为大家分享行业内最新的应用方案与解决方案。本次为分享的第二期,....
    的头像 安富利 发表于 03-17 09:50 ? 134次 阅读

    STM32: 介绍IIC总线、读写AT24C02(模拟时序)

    AT24C02系列支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送....
    的头像 DS小龙哥-嵌入式技术 发表于 03-17 09:23 ? 1306次 阅读
    STM32: 介绍IIC总线、读写AT24C02(模拟时序)

    基于STM32 人群定位、调速智能风扇设计

    基于STM32 人群定位、调速智能风扇设计,内含:程序、设计报告、视频演示等。 ...
    发表于 03-16 23:58 ? 1644次 阅读

    可有用过stm32f407外接ti的数模转换器ads7279的朋友。

    目前用内部时钟,自动触发和外部时钟,自动触发,两种情况下,配置完寄存器(0xe8ad)或(0xecad),对应前面两种情况,要么读不...
    发表于 03-16 21:19 ? 893次 阅读

    STM32控制电机调速硬件电路问题?

    主要功能是STM32控制电机调速,按键控制电机运转时间与速度档位,数码管显示运转的档位与运转时间,开机设置运转时间与速度档位...
    发表于 03-16 17:42 ? 1998次 阅读

    stm32中常用关键字的使用方法

    extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例。
    的头像 嵌入式应用开发 发表于 03-16 16:35 ? 296次 阅读

    教你使用RT-Thread开启STM32H7系列的RTC与Alarm组件

    背景【ART-PI】默认没有开启Alarm组件,尝试适配并开启有部分工程师想使用RT-Thread 基于STM32H7系列的RTC 与 A...
    发表于 03-16 14:05 ? 4955次 阅读
    教你使用RT-Thread开启STM32H7系列的RTC与Alarm组件

    多通道及通用模拟输入参考设计

    通用模拟输入是工厂自动化普遍使用的单元电路,灵活测量模拟电压/电流信号以及RTD、TC成为组装过程中不可或缺的功能。工业4....
    发表于 03-16 11:23 ? 1832次 阅读

    MCU时钟配置及外接晶振选择

    低速外部时钟(LSE):由外接低频晶振产生,一般为32.768kHz,用于驱动实时时钟 (RTCCL....
    发表于 03-16 11:20 ? 23次 阅读
    MCU时钟配置及外接晶振选择

    奇瑞以用户思维和互联网思维迈向新里程_瑞萨电子推出汽车执行器和传感器控制MCU

    2021年1-11月,奇瑞累计销售汽车85万辆,同比增长38.3%,高于4.5%的行业增幅。在奇瑞集....
    的头像 电子魔法师 发表于 03-16 11:18 ? 178次 阅读

    单片机解密GD32F105/107芯片解密技巧

    单片机解密GD32F105/107芯片解密 凯基迪科技GD32F105/107解密系列:GD32F105RBT6、GD32F105RCT6、GD32F105...
    发表于 03-16 09:12 ? 613次 阅读
    单片机解密GD32F105/107芯片解密技巧

    峰岹科技广东省“专精特新”中小企业 笙泉科技最新MCU问世

    专精特新”中小企业是指具备“专业化、精细化、特色化、新颖化”特征的中小企业,要坚持“以恒心办恒业”,....
    的头像 倩倩 发表于 03-15 15:52 ? 229次 阅读

    瑞萨电子发布新一代经WPC Qi 1.3认证的车载舱内无线充电参考设计

    瑞萨电子集团(TSE:6723)今日宣布,推出用于车载无线充电、且经WPC Qi认证的下一代客户参考....
    发表于 03-15 15:38 ? 710次 阅读
    瑞萨电子发布新一代经WPC Qi 1.3认证的车载舱内无线充电参考设计

    STM 32和AD 5791的转换

    现在很多智能测量仪表要求具有超高精度的电压信号,同时要求高稳定性、高线形度和低噪声、低温度漂移。这样的模拟系统设计面临复...
    发表于 03-15 11:26 ? 562次 阅读

    NXP MCU技术为智能手表未来提供动力_西门子推出新版领先的NX软件

    为了在当今充满活力的智能手表市场中竞争,与领先的平台提供商合作会有所帮助。通过使用经过市场验证的处理....
    的头像 电子魔法师 发表于 03-15 11:19 ? 269次 阅读

    四维图新旗下杰发科技MCU家族最强成员AC7840x成功点亮

    近日,四维图新旗下杰发科技首款功能安全MCU– AC7840x提前回片,并成功启动点亮。AC7840....
    的头像 电子行业新闻 发表于 03-15 09:40 ? 104次 阅读
    四维图新旗下杰发科技MCU家族最强成员AC7840x成功点亮

    杰发科技MCU家族最强成员AC7840X成功点亮

    3月10日,杰发科技首款功能安全MCU –AC7840x提前回片,并成功启动点亮。AC7840x的到....
    发表于 03-15 09:24 ? 455次 阅读
    杰发科技MCU家族最强成员AC7840X成功点亮

    STM32:编写XPT2046电阻触摸屏驱动(模拟SPI)

    XPT2046是一颗12位的ADC芯片,可以当做普通的ADC芯片使用,但是一般都是用在电阻触摸屏上,....
    的头像 DS小龙哥-嵌入式技术 发表于 03-15 09:13 ? 1984次 阅读
    STM32:编写XPT2046电阻触摸屏驱动(模拟SPI)

    如何解决STM32芯片Flash写保护的问题

    本文介绍了如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题;如果您遇到相同....
    的头像 FPGA之家 发表于 03-14 17:24 ? 639次 阅读

    涂鸦模组开发(压力传感器HX711)—3. 涂鸦模组数据通信

    概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物....
    发表于 03-14 15:09 ? 6次 阅读
    涂鸦模组开发(压力传感器HX711)—3. 涂鸦模组数据通信

    涂鸦模组开发(压力传感器HX711—2压力传感器HX711

    概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物....
    发表于 03-14 14:29 ? 8次 阅读
    涂鸦模组开发(压力传感器HX711—2压力传感器HX711

    FPGA与MCU的程序思路

    FPGA以9600的波特率向单片机发送32位数据,然后单片机对数据进行解析,显示在显示屏上面
    的头像 FPGA之家 发表于 03-14 14:07 ? 1160次 阅读

    STM32: NEC红外线协议解码(超低成本无线传输方案)

    这是NEC协议的红外线遥控器: 如果自己手机没有红外线遥控器的功能,可以淘宝上买一个小遥控器来学习....
    的头像 DS小龙哥-嵌入式技术 发表于 03-14 09:48 ? 157次 阅读
    STM32: NEC红外线协议解码(超低成本无线传输方案)

    恩智浦智能视觉组培训第二期的内容

    2022年的全国大学生智能汽车竞赛的竞赛规则(查看详情>>)已经公布,由恩智浦赞助的“智能视觉组”的....
    的头像 NXP客栈 发表于 03-14 09:40 ? 168次 阅读

    几种常见的基准电压源电路

    相较于电流源,我们平时用电压源用得更多一点,有些人会问了,电压源我知道,什么是基准电压源呢?基准电压....
    的头像 硬件那点事儿 发表于 03-12 16:42 ? 736次 阅读
    几种常见的基准电压源电路

    MCU1与MCU2之间怎样进行串口通信

    今天我们来讲讲,下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。先说一说这个....
    的头像 STM32嵌入式开发 发表于 03-12 14:37 ? 743次 阅读

    STM32最小系统硬件组成部分

    最小系统为单片机工作的最低要求,不含外设控制,原理简单,分析最小系统是STM32入门的基础。
    的头像 STM32嵌入式开发 发表于 03-12 14:17 ? 698次 阅读

    STM32设计智能居家-万能红外遥控器

    NEC协议在上篇文章里已经详细介绍过了。这篇文章和上篇文章内容是连贯的,上篇文章完成NEC红外线协议....
    的头像 DS小龙哥-嵌入式技术 发表于 03-12 13:30 ? 550次 阅读
    STM32设计智能居家-万能红外遥控器

    详解CAN总线的基础知识

    大家好,我是小麦。最近在调试一个CAN总线的设备时遇到了一些问题,在此简单总结一下。本文将对CAN总....
    的头像 嵌入式ARM 发表于 03-12 10:06 ? 452次 阅读

    使用STM32、SFPGA和I.MX6ULL IO点亮LED灯

    摘要:你点亮过多少板子的LED灯呢?有很多小伙伴要求讲一下STM32、FPGA、Liunx他们之间有....
    的头像 嵌入式ARM 发表于 03-12 09:24 ? 329次 阅读

    电容尺寸、耐压值及方向的选择

    电容的尺寸:对于陶瓷电容和钽电容,其尺寸和电阻一样,小尺寸的用英制,0201、0402、0603、0....
    的头像 张飞实战电子 发表于 03-12 08:27 ? 257次 阅读

    涂鸦模组开发(压力传感器HX711)—1.模块准备

    概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物....
    发表于 03-11 17:54 ? 6次 阅读
    涂鸦模组开发(压力传感器HX711)—1.模块准备

    TMS320F28076 TMS320F2807x Piccolo 微控制器

    C2000?32位微控制器在处理,传感和驱动方面进行了优化,可提高实时控制应用中的闭环性能,例如工业电机驱动,光伏逆变器和数字电源,电动车辆与运输,电机控制以及传感和信号处理.C2000产品线包括Delfino?高端性能系列和Piccolo?入门级性能系列。 TMS320F2807x微控制器平台属于Piccolo?系列,适用于高级闭环控制应用,例如工业电机驱动,光伏逆变器和数字电源,电动车辆与运输以及传感和信号处理。数字电源和工业驱动器的完整开发包作为powerSUITE和DesignDRIVE方案的一部分提供。 F2807x是基于TI行业领先的C28x内核的32位浮点微控制器。此内核的性能通过三角运算硬件加速器得到了提升,该加速器利用CPU指令(如正弦,余弦和反正切函数)提高了转矩环路和位置计算中常见的基于三角运算的算法性能。 F2807x微控制器系列采用一个CLA实时控制协处理器.CLA是一款独立的32位浮点处理器,运行速度与主CPU相同。该CLA会对外设触发器作响响应,并与主C28x CPU同时执行代码。这种并行处理功能可有效加倍实时控制系统的计算性能。通过利用CLA执行时间关键型功能,主C28x CPU可以得到释放,以便用于执行通信和诊断等其...
    发表于 01-08 17:49 ? 857次 阅读
    TMS320F28076 TMS320F2807x Piccolo 微控制器

    CC3200MOD SimpleLink Wi-Fi CC3200 片上因特网无线 MCU 模块

    使用业界首款可编程FCC,IC,CE和Wi-Fi认证无线微控制器(MCU)模块,内置Wi-Fi,开始您的设计连接。 SimpleLink CC3200MOD专为物联网(IoT)而创建,是一个集成了ARM Cortex-M4 MCU的无线MCU模块,允许客户使用单个设备开发整个应用程序。凭借片上Wi-Fi,互联网和强大的安全协议,无需先前的Wi-Fi体验即可加快开发速度。 CC3200MOD将所有必需的系统级硬件组件(包括时钟,SPI闪存,RF开关和无源元件)集成到LGA封装中,以便于组装和低成本PCB设计。 CC3200MOD作为完整的平台解决方案提供,包括软件,样本应用,工具,用户和编程指南,参考设计以及TI E2E支持社区。 应用MCU子系统包含行业标准的ARM Cortex- M4内核以80 MHz运行。 该器件包括各种外设,包括快速并行相机接口,I2S,SD /MMC,UART,SPI,I2C和四通道ADC。 CC3200系列包括用于代码和数据的灵活嵌入式RAM;带外部串行闪存引导程序和外设驱动程序的ROM;用于Wi-Fi网络处理器服务包,Wi-Fi证书和凭证的SPI闪存。 Wi-Fi网络处理器子系统具有Wi-Fi片上网络,并包含一个附加功能专用的ARM...
    发表于 08-20 17:53 ? 546次 阅读
    CC3200MOD SimpleLink Wi-Fi CC3200 片上因特网无线 MCU 模块
    八方体育娱乐-八方体育平台app【官网】