专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
发现超级大坑,各位注意,stm8非HS引脚不能读取6050
2019-12-23 18:37
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
7133
46
46
最近调6050,程序直接从avr移植过来的,发现stm8只要不是HS引脚,就无法初始化6050,反复换了几组io口测试过了,大家一定要注意
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
46条回答
gyzzg2030
2019-12-28 07:31
xiepan2010 发表于 2017-9-13 17:26
哪位老司机来个stm8的模拟iic例程看看 怎么改都不行
试试老司机的模拟I2C:
#define uchar unsigned char
#define uint unsigned int
#define use_delay_char() uchar delay_char
#define L_go_T_deal(PIN,t) delay_char=t; while( PIN) if((--delay_char)==0)
//枚举 ACK模式选择
typedef enum
{
NAK = 0,
ACK = 1
} ACK_Type;
void MCP3421_IO_init(void)
{
//================SCL pin init===================
SET_GPIO_OUT_PP_HIGH_SLOW(SCL0_PORT,SCL0_NUM);
//================SDA pin init===================
SET_GPIO_OUT_PP_HIGH_SLOW(SDA0_PORT,SDA0_NUM);
}
#if 1
void SomeNOP(void)
{
uchar i = 6;
while(i--);
}
#else
#define SomeNOP() asm("nop")
#endif
void I2C0_Start(void)
{
SET_SDA0_OUT;
SDA0_1;
SCL0_1; SomeNOP();
SDA0_0; SomeNOP();
SCL0_0;
}
void I2C0_Stop(void)
{
SET_SDA0_OUT;
SCL0_0;
SDA0_0; SomeNOP();
SCL0_1; SomeNOP();
SDA0_1;
}
uchar I2C0_Check_ACK(void)
{
use_delay_char();
SET_SDA0_IN;
//SDA0_1;
L_go_T_deal(GET_SDA0, 20) break;
SomeNOP();
SCL0_1; SomeNOP();
SCL0_0; SomeNOP();
SET_SDA0_OUT;
if(delay_char==0) return 0;
else return 1;
}
void I2C0_ACK(void)
{
SET_SDA0_OUT;
SDA0_0;
SomeNOP();
SCL0_1;
SomeNOP();
SCL0_0;
}
void I2C0_NOACK(void)
{
SET_SDA0_OUT;
SDA0_1;
SomeNOP();
SCL0_1;
SomeNOP();
SCL0_0;
}
uchar I2C0_Write_Byte(uchar ch)
{
uchar i = 8;
while(i--)
{
SCL0_0;
if(ch&0x80) SDA0_1;
else SDA0_0;
ch <<= 1; SomeNOP();
SCL0_1; SomeNOP();
}
SCL0_0;
return I2C0_Check_ACK();
}
uchar I2C0_Read_byte(ACK_Type s)
{
unsigned char dat=0,i;
SDA0_1;
SET_SDA0_IN;
for( i=0; i<8; i++ )
{
SomeNOP();
dat <<= 1;
SCL0_1;
if(GET_SDA0) dat++;
SomeNOP();
SCL0_0;
//SomeNOP();
}
SET_SDA0_OUT;
if(s==ACK) I2C0_ACK();
else I2C0_NOACK();
return dat;
}
加载中...
查看其它46个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
试试老司机的模拟I2C:
#define uchar unsigned char
#define uint unsigned int
#define use_delay_char() uchar delay_char
#define L_go_T_deal(PIN,t) delay_char=t; while( PIN) if((--delay_char)==0)
//枚举 ACK模式选择
typedef enum
{
NAK = 0,
ACK = 1
} ACK_Type;
void MCP3421_IO_init(void)
{
//================SCL pin init===================
SET_GPIO_OUT_PP_HIGH_SLOW(SCL0_PORT,SCL0_NUM);
//================SDA pin init===================
SET_GPIO_OUT_PP_HIGH_SLOW(SDA0_PORT,SDA0_NUM);
}
#if 1
void SomeNOP(void)
{
uchar i = 6;
while(i--);
}
#else
#define SomeNOP() asm("nop")
#endif
void I2C0_Start(void)
{
SET_SDA0_OUT;
SDA0_1;
SCL0_1; SomeNOP();
SDA0_0; SomeNOP();
SCL0_0;
}
void I2C0_Stop(void)
{
SET_SDA0_OUT;
SCL0_0;
SDA0_0; SomeNOP();
SCL0_1; SomeNOP();
SDA0_1;
}
uchar I2C0_Check_ACK(void)
{
use_delay_char();
SET_SDA0_IN;
//SDA0_1;
L_go_T_deal(GET_SDA0, 20) break;
SomeNOP();
SCL0_1; SomeNOP();
SCL0_0; SomeNOP();
SET_SDA0_OUT;
if(delay_char==0) return 0;
else return 1;
}
void I2C0_ACK(void)
{
SET_SDA0_OUT;
SDA0_0;
SomeNOP();
SCL0_1;
SomeNOP();
SCL0_0;
}
void I2C0_NOACK(void)
{
SET_SDA0_OUT;
SDA0_1;
SomeNOP();
SCL0_1;
SomeNOP();
SCL0_0;
}
uchar I2C0_Write_Byte(uchar ch)
{
uchar i = 8;
while(i--)
{
SCL0_0;
if(ch&0x80) SDA0_1;
else SDA0_0;
ch <<= 1; SomeNOP();
SCL0_1; SomeNOP();
}
SCL0_0;
return I2C0_Check_ACK();
}
uchar I2C0_Read_byte(ACK_Type s)
{
unsigned char dat=0,i;
SDA0_1;
SET_SDA0_IN;
for( i=0; i<8; i++ )
{
SomeNOP();
dat <<= 1;
SCL0_1;
if(GET_SDA0) dat++;
SomeNOP();
SCL0_0;
//SomeNOP();
}
SET_SDA0_OUT;
if(s==ACK) I2C0_ACK();
else I2C0_NOACK();
return dat;
}
一周热门 更多>