请教!STC8H单片机使能I2C后出现死机现象的原因?[结贴]
本帖最后由 乐此不疲 于 2023-1-30 12:10 编辑最近我一直在用STC8H的板子做各种实验,目前工程中已经完美整合了TFT_LCD驱动、RTC时钟、硬件触摸按键,接下来要加入硬件I2C来驱动AHT25温湿度传感器,但出师不利只要主函数下主循环前使能I2C就死机,就是加入这句:I2CCFG = 0xE0;就死机黑屏,不知道这个寄存器操作与谁发生冲突了,请指点。先谢了!!!
部分主函数如下:
void main()
{
GPIO_set();//头文件中I/O口全部设置为准双向口
INT0 = 1; //外部中断0端口置高电平(头文件中定义位变量INT0=P3^2)
EX0 = 1; //使能 INT0 中断
EAXSFR();
Reset1();
lcd_initial();
Show_RGB (0,480,0,320,BLACK);
RTC_config();
//I2C_init();//此函数包含代码I2CCFG = 0xE0;!!!!!!!!!!!
key_init();
EA=1;
while(1)
{
*****
}}
问题原因已经找到了,是线路设计错误,是I2C与SPI总线共用了一个引脚造成的,一旦初始化了硬件I2C通讯端口就会与TFT-LCD通讯的SPI端口出现冲突从而出现黑屏死机的故障,将SPI总线改换其他I/O口并改成软件模拟SPI模式就一切正常了。
你外部加上10K 上拉电阻,将实际接线的原理图也先发上来
参考下如下 STC32G的I2C 演示程序
STC驱动教程系列——SHT30温湿度传感器_硬件IIC接口 - 开源广场及教学视频交流 国芯论坛 (stcaimcu.com)
神农鼎 发表于 2023-1-28 13:39
你外部加上10K 上拉电阻,将实际接线的原理图也先发上来
参考下如下 STC32G的I2C 演示程序
STC驱动教程系列 ...
多谢指点,问题已经解决、是PCB设计的坑。再谢。 开心,又可以前进了:) 神农鼎 发表于 2023-1-30 15:15
开心,又可以前进了
是的,有时候一个问题堵住就寸步难行,玩单片机就是不断排除障碍的过程,也正是因为有这些障碍才有了与别人的学习与交流和进步,而那些未知的问题也就是痴迷爱好和总也不能放手的动力。
页:
[1]