工作需要,最近忙于调试一款2.4G无线芯片解决方案,采用的芯片是ARF2496K,该芯片要求外部供电3.3V,所以不能直接使用普通的C51控制,除非接转换芯片。AT89S52、STC89C52都没有用武之处了,所以主控选型初步定为STM8S系列,最终调试时所使用的为STM8S103F3。
一开始,我们使用的是由博巨兴提供的方案,主控为BJX8F101BTG,其实这片芯片的核心就是STM8S。外加一个仿真器BJX-LINK-001,按我的理解这也就是ST-LINK仿真器。
第一步,就是确定主控能正常工作,STM8S的最小系统是在淘宝上直接购买了一块STM8S103F3小核心板,这个板子自带两个LED灯,一个用于指示电源,另一个可供I/O控制。而且将所有的管脚都引出来了,很方便外接ARF2496K芯片。拿到这板后,自己焊接了排针,万用表测试线路是正常的了。
万事俱备,开工了,打开一个控制LED灯的程序,准备烧录时,发现一个错误: “chip does not answer” ,如下图:


初步怀疑我芯片的问题,换了一块核心板还是这样,便掉转矛头考虑是不是仿真器的问题,在GOOGLE搜索chip does not answer ,答案各种各样,没有什么进展,但得到一个信息就是供电的问题,检查BJX-LINK时发现竟然没有输出电压,查看自带的手册,发现这手册问题很多,讲的都不怎么清楚,示意图也比较模糊。于是认为这个仿真器坏了,最后联系博巨兴,他们那边给出的解释是板子需要另外供电,原来如此,果然,在给芯片供电后一切正常。LED灯闪了。
第二步就是考虑移植ARF2496K代码了,参考ARF2496K datasheet,初步完成一些函数的封装,如SPI操作。最之前还不确定这ARF2496K芯片是不是好的,所以必须先能正常读取内部寄存器值才能往下做开发。
这里遇到个让我纠结了好久的问题,调试时示波器也查看了,管脚也测过了都是正常的,没想到竟然最后的问题出在了FWLIB1.0库的GPIO_ReadInputPin函数上。
代码片段如下:
u8 rf_spi_read(void) { u8 i,val = 0; BitStatus d; for(i = 0;i < 8;i++) { val <<= 1; d=GPIO_ReadInputPin(ARF_PORT,TRSDAT); //ARF_PORT 就是GPIOC, //if (GPIO_ReadInputPin(ARF_PORT,TRSDAT)==1) //检测TRSDAT位是不是为高 if(GPIOC->IDR&TRSDAT) //检测TRSDAT位是不是为高 val |= 1; TRSCLK_U; nop();nop();nop(); TRSCLK_D; } return val; }
讯享网之前并没有使用 if(GPIOC->IDR&TRSDAT) 这种方式,而是使用的库函数if(GPIO_ReadInputPin(ARF_PORT,TRSDAT)==1),但总是没有进入过,一开始以为是其它如延时,访问时序的问题所致,将那些代码仔细检查过了都没有问题。于是考虑将GPIO_ReadInputPin(ARF_PORT,TRSDAT)读出来看看,是什么玩意。d=GPIO_ReadInputPin(ARF_PORT,TRSDAT); 总是返回为0 也就是RESET状态。
原型如下:

讯享网BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin) { return ((BitStatus)(GPIOx->IDR & (u8)GPIO_Pin)); }
typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus, BitStatus;
注意这里存在一个使用上的问题,这个函数是不能这样判断的 if(GPIO_ReadInputPin(GPIOC,TRSDAT)==1) ,这是错误的,按库函数的意思是,返回非0就表示是高电平。一定得注意。但我出现的问题并不在这里,而是这个函数总是返回0,如下图:

TRSDAT是连接在PC3口,这里PC_IDR 为0x88 b 第3位为1,意味着是存在高电平的,但变量d的值仍是0 RESET,操蛋了个去。
接着往下执行,下图:

完全正常,可问题就是为什么这
讯享网GPIO_ReadInputPin(ARF_PORT,TRSDAT)就不正常呢????
反正是可以正常读出寄存器值了,接着往下写驱动了。
总结:
BJX8F101BTG 就是STM8S系列,但有些管脚上的微微差别。
BJX-LINK-001仿真器就是ST-LINK。
出现"chip does not answer" 很可能需要给板子供电。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16713.html