马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
全部代码网盘自取
链接:
提取码:3ii2
1、电路图
这个电路允许通过I2C总线与EEPROM(M24C02-WMN6TP)和数字电位器(MCP4017T-104ELT)举行通讯。EEPROM用于存储数据,而数字电位器可以用于调治模拟电压输出。通过I2C总线,微控制器可以读取EEPROM中的数据或设置数字电位器的电阻值。
2、Cube设置
将PB7和PB6设置为output
将官方提供的I2C底层代码放到工程目次下
3、代码
3.1 存储16位无符号数(0~65535)
我们在前面输入捕捉频率的底子上,增长按键功能,并用eeprom存储频率(整型数据)
修改i2c_hal.h和i2c_hal.c文件
i2c_hal.h
- #ifndef __I2C_HAL_H
- #define __I2C_HAL_H
- #include "main.h"
- void I2CStart(void);
- void I2CStop(void);
- unsigned char I2CWaitAck(void);
- void I2CSendAck(void);
- void I2CSendNotAck(void);
- void I2CSendByte(unsigned char cSendByte);
- unsigned char I2CReceiveByte(void);
- void I2CInit(void);
- uchar eeprom_read(uchar addr);
- void eeprom_write(uchar addr,uchar data);
- #endif
复制代码 i2c_hal.c
- /*
- ����˵��: CT117E-M4Ƕ��ʽ������GPIOģ��I2C������������
- ��������: MDK-ARM HAL��
- Ӳ������: CT117E-M4Ƕ��ʽ������
- �� ��: 2020-3-1
- */
- #include "i2c_hal.h"
- #define DELAY_TIME 20
- /**
- * @brief SDA������ģʽ����
- * @param None
- * @retval None
- */
- void SDA_Input_Mode()
- {
- GPIO_InitTypeDef GPIO_InitStructure = {0};
- GPIO_InitStructure.Pin = GPIO_PIN_7;
- GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
- GPIO_InitStructure.Pull = GPIO_PULLUP;
- GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- /**
- * @brief SDA�����ģʽ����
- * @param None
- * @retval None
- */
- void SDA_Output_Mode()
- {
- GPIO_InitTypeDef GPIO_InitStructure = {0};
- GPIO_InitStructure.Pin = GPIO_PIN_7;
- GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_OD;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- /**
- * @brief SDA�����һ��λ
- * @param val ���������
- * @retval None
- */
- void SDA_Output( uint16_t val )
- {
- if ( val )
- {
- GPIOB->BSRR |= GPIO_PIN_7;
- }
- else
- {
- GPIOB->BRR |= GPIO_PIN_7;
- }
- }
- /**
- * @brief SCL�����һ��λ
- * @param val ���������
- * @retval None
- */
- void
复制代码 |