OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2614|回复: 5

AT24C02实验的,关于端口模式输入输出寄存器操作的问题

[复制链接]

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
发表于 2018-1-25 18:46:13 | 显示全部楼层 |阅读模式
1金钱
简述一下问题:在对端口模式的时候,原例程中的at24cxx.h文件中有两句语句,利用寄存器对端口模式进行设置(硬件图上,SDA-PB7,SCL-PB6)
                     语句为:#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
                                 #define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}

我查阅了相关资料,①百度上说CRL是对管脚0~7进行操作的,而CRH是对管脚8~15进行操作的,
                           ②查看STM32中文参考手册,关于CRL和CRH寄存器的介绍也是同①所说的那样。

那么问题来了,这两句宏定义与实际硬件的连接不同。有大佬知道是什么情况吗,是我看理解错了还是那个两句宏定义代码是错的?我自己理解那两句宏定义应该为

                     语句为:#define SdaModeIn()   {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8<<28;}
                                 #define SdaModeOut()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=3<<28;}


参考:①STM32寄存器操作端口模式SDA_OUT()/SDA_IN()       https://www.2cto.com/kf/201705/640300.html

         ②STM32中文参考手册_V10.pdf P112 P112

最佳答案

查看完整内容[请看2#楼]

#ifndef __MYIIC_H #define __MYIIC_H #include "sys.h" ////////////////////////////////////////////////////////////////////////////////// //本程序只供学习使用,未经作者许可,不得用于其它任何用途 //ALIENTEK战舰STM32开发板 //IIC驱动 代码 //正点原子@ALIENTEK //技术论坛:www.openedv.com //修改日期:2012/9/9 //版本:V1.0 //版权所有,盗版必究。 //Copyright(C) 广州市星翼电子科技有限公司 200 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
 楼主| 发表于 2018-1-25 18:46:14 | 显示全部楼层
#ifndef __MYIIC_H
#define __MYIIC_H
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//IIC驱动 代码          
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/9
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////

//IO方向设置

#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}

//IO操作函数         
#define IIC_SCL    PBout(6) //SCL
#define IIC_SDA    PBout(7) //SDA         
#define READ_SDA   PBin(7)  //输入SDA

//IIC所有操作函数
void IIC_Init(void);                //初始化IIC的IO口                                 
void IIC_Start(void);                                //发送IIC开始信号
void IIC_Stop(void);                                  //发送IIC停止信号
void IIC_Send_Byte(u8 txd);                        //IIC发送一个字节
u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
u8 IIC_Wait_Ack(void);                                 //IIC等待ACK信号
void IIC_Ack(void);                                        //IIC发送ACK信号
void IIC_NAck(void);                                //IIC不发送ACK信号

void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
u8 IIC_Read_One_Byte(u8 daddr,u8 addr);          
#endif


问题已解决,那个pdf指南可能版本不够新,实际工程里的代码是写对的。
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-25 20:44:38 | 显示全部楼层
Anyint 发表于 2018-1-25 20:23
#ifndef __MYIIC_H
#define __MYIIC_H
#include "sys.h"

恭喜你!
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
 楼主| 发表于 2018-1-25 22:30:29 | 显示全部楼层

谢谢大佬鼓励,已实现断电保存
回复

使用道具 举报

4

主题

27

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2016-12-2
在线时间
39 小时
发表于 2018-2-4 11:59:13 | 显示全部楼层
请问一下,楼主的24c02完整型号是什么?是在哪里买的?在原子哥这里吗?我淘宝买了几块24C02发现都检测失败,找不到24C02,换上原子哥阿波罗板上 拆下来的24c02就可以检测到了。难道我买的几块都是坏的?还是。。。。必须要买原子哥家的?
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
 楼主| 发表于 2018-2-13 13:47:28 | 显示全部楼层
Ilena 发表于 2018-2-4 11:59
请问一下,楼主的24c02完整型号是什么?是在哪里买的?在原子哥这里吗?我淘宝买了几块24C02发现都检测失败 ...

SOP封装的都可以呀,AT24C0XX这个型号的,硬件连接图一定要正确,代码用原子哥的就行。或者你自己会写的话,自己写一个AT24CXX的库函数。这个芯片淘宝上都有买吧,比如Risym、telesky、优信电子等等这几家比较大的电子元器件的店铺稍微好点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表