AI8H8K64U 读取PCF8563失败
事情是酱色儿的:用Arduino Nano读取PCF8563默认情况下一切正常,
用TSSOP20的AI8H8K64U就不行,用的默认的P1.4, P1.5, 读到是乱码,且需要等待才会返回
然后用AI8G1K8 DIP16做了一个I2C SLAVE,8H是能够读到8G的正确数据,速度响应很快!
想到PCF8563最大速度是400KHz,所以按DataSheet把AI8H8K64U的I2CCFG也设置为匹配400Khz,甚至更低,但都不行,
这时没辙了,再把8G拿来试试做reader,结果竟然就可以了,400K的速度响应很快,一点问题没有。
8G和8H代码都是一样的,只是切换端口的部分不同,8H是用的默认,8G切了一下。
不知道还有什么B门。
{:yiwen:}
对了,I2C使能的内部上拉4.2K电阻,难道跟这个有关?
<p>码放上来瞅瞅?</p>
I2C使能的内部上拉4.2K电阻要配合准双向或者开漏输出模式,实测没有问题,另外I2C有多重端口映射,需要搞清楚在哪一组IO上,实在不行就把代码和原理图贴上来,大家分析下
如果SDA、SCL两根线外面没有接4.7k上拉电阻到VCC的话,片子里面要使能上拉电阻,我用STC8H8K64U 读取AHT20温湿度模块的时候就是这样,电路上没接上拉电阻,死活通讯不上,内部使能上拉电阻后,顺利读取出来温度、湿度{:4_200:} wangxiangtan 发表于 2025-1-4 22:51
如果SDA、SCL两根线外面没有接4.7k上拉电阻到VCC的话,片子里面要使能上拉电阻,我用STC8H8K64U 读取AHT20 ...
没上拉还读不出来,还会这样啊,看了模块电路图都是没上拉的,难道都要开内部上拉。 soma 发表于 2025-1-4 23:41
没上拉还读不出来,还会这样啊,看了模块电路图都是没上拉的,难道都要开内部上拉。 ...
要开的,不然上升沿速度不够 花了两天终于知道原因了,猜测还是上拉的问题,检查DataSheet定义都没错,打开STCHX.h,发现一行注释:
//如下特殊功能寄存器位于扩展RAM区域
//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写
检查代码,原来初始化上拉刚好放到P_SW2设置之前了
8G可以是因为切换管脚,在库函数hardiic_init()之后进行了覆盖配置,也可以解释为啥8H读8G是正常,因为靠的8G的上拉。
又想到两个问题:
假如主从机都开启上拉,那岂不是相当于并联,电阻小了一半,有没啥影响呢?
这个P_SW2经常搞出问题,为何设计这么一个开关呢?(位于扩展RAM的原因?哪为啥要放到扩展RAM?)很多时候看示例代码都是直接打开也不关,有没有专家讲讲。
bviotkxt 发表于 2025-1-5 18:27
花了两天终于知道原因了,猜测还是上拉的问题,检查DataSheet定义都没错,打开STCHX.h,发现一行注释:
// ...
哈哈哈哈,原来是这样啊
等于寄存器没配 bviotkxt 发表于 2025-1-5 18:27
花了两天终于知道原因了,猜测还是上拉的问题,检查DataSheet定义都没错,打开STCHX.h,发现一行注释:
// ...
估计寄存器太多了,只能部分放扩展RAM了。
页:
[1]