打印

STM8S103K3 PD3是否有BUG?

[复制链接]
6223|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
乙天|  楼主 | 2010-5-15 22:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乙天 于 2010-5-17 13:07 编辑

file:///F:/tempsys/moz-screenshot.png
三极管压降有1.3V,不能进入深度饱和。
PD_DDR |= 0x1C;          /* Output. */
    PD_CR1 |= 0x1C;          /* PushPull. */
    PD_CR2  = 0x00;          /* Output speed up to 2MHz. */
    PD_ODR = 0;

另外用外部上拉,file:///F:/tempsys/moz-screenshot-1.png开漏方式,输出低电平时管脚有1.3V。

以前用AVR的mega单片机就没有出现这种问题。
沙发
乙天|  楼主 | 2010-5-15 22:49 | 只看该作者
用得PD3 口输出。

使用特权

评论回复
板凳
ShakaLeo| | 2010-5-16 13:09 | 只看该作者
不应该,推挽模式的灌电流能力应该很强的,检查一下电路吧,如果R57是100K应该非常容易饱和的。

使用特权

评论回复
地板
乙天|  楼主 | 2010-5-16 13:11 | 只看该作者
问题找到,PD3是AD 外部启动复用口。
关闭AD采样,一切正常。

下面是AD采样代码。
ADC_CSR  = ch;       
        ADC_CR1 |= 0x01;         /* First set ADON to power on the ADC module. */
    i = 60;                   /* Wait >7us to ensure the ADC power on finished.*/
    while(i--);        
    ADC_CR1 |= 0x01;         /* Set ADON again to start AD convert. */
    while(!(ADC_CSR & 0x80));/

断点查看,一切正常,但全速运行,PD3口仍然有问题。

还没有找到解决办法。

使用特权

评论回复
5
乙天|  楼主 | 2010-5-16 15:48 | 只看该作者
估计是BUG,在STM8S105中就可在选项字关闭 ADC_ETR 。

不知有没有办法补救。

使用特权

评论回复
6
乙天|  楼主 | 2010-5-16 21:37 | 只看该作者
用STM8S105K4 测试没有此问题。不过要在选项字不选AD的外部触发。

基本可以判断是STM8S103K3的BUG了。
网上搜了下,发现STM8S103问题不少。

使用特权

评论回复
7
mcuisp| | 2010-5-16 22:37 | 只看该作者
呵呵,不至于啦。
驱动读卡天线都可以呢。
肯定是程序控制问题。

使用特权

评论回复
8
乙天|  楼主 | 2010-5-16 23:21 | 只看该作者
本帖最后由 乙天 于 2010-5-16 23:23 编辑

PD3口本身驱动是没有问题的。

估计在AD采样期间,将PD3口锁定为输入口,采样结束后就恢复为输出口。
这样构成一个输出是脉冲输出。

如果程序有问题,105是同样的程序,为何没有问题?

使用特权

评论回复
9
su_mj000| | 2010-5-17 06:40 | 只看该作者
将R28去掉试试。估计就能解决问题。

去掉R28后,Q7 成为‘常饱和’状态(保留R28,Q7成为‘常截止’)。

使用特权

评论回复
10
乙天|  楼主 | 2010-5-17 09:04 | 只看该作者
这是成熟的电路,电路没有任何问题。

这个电路 AVR,STM8S105K4都没有问题。
驱动读卡天线可以,并不表明这个PD3没问题,实际效果,这个PD3驱动负载也没有问题,但会导致输出电流小。
如果采用每秒间隔采样,就会明显发现,输出电流在跳变。

这个PD3口出问题,仅当AD采样时才会出现,所以一般应用还不容易发现。

使用特权

评论回复
11
ShakaLeo| | 2010-5-17 09:50 | 只看该作者
STM8S103没有关闭ADC_ETR的寄存器? 手册上的ADC_CR2寄存器中的EXTTRIG位就是打开和关闭ADC外部触发的。

使用特权

评论回复
12
乙天|  楼主 | 2010-5-17 11:06 | 只看该作者
这个错误应该不会犯的。
PB_DDR  = 0x0;          /* Output. */
    PB_CR1 =  0x0;          /* PushPull. */
    PB_CR2  = 0x00;          /* Output speed up to 2MHz. */
        ADC_CR2  = 0x00;
    ADC_CR1  = 0x00;   
    ADC_TDRL = 0x3F;

外部触发默认是关闭的。
ADC_CR2 寄存器就就是配置外部触发与定时器触发的。

使用特权

评论回复
13
无冕之王| | 2010-5-17 21:38 | 只看该作者
不应该

使用特权

评论回复
14
IJK| | 2010-5-18 09:22 | 只看该作者
“关闭AD采样,一切正常” 说明不是芯片本身的问题,而是芯片的使用问题

使用特权

评论回复
15
乙天|  楼主 | 2010-5-18 12:53 | 只看该作者
我将PD3换成PD7,一切正常。

这虽然是PD3有问题。STM8S105K4 为何使用PD3没有问题?同样的程序。
103与105的区别在于,105可以在选项字关闭ADC_ETR功能。

呵呵,我上面已经说得很清楚了。有条件的朋友可以也实际测试看,是否与我测试结果一样。

即使有BUG也不怕,如果规避就行,就怕有问题瞒着,让客户去承担风险。

使用特权

评论回复
16
yuangt| | 2013-4-16 14:40 | 只看该作者
我应该也碰到了同样的问题,我的PD3悬空,内部配置成推挽输出,当我全速运行一会儿后,PD3就不受我控制了,我给它输出高电平,实际当中用万用表量是0V,我看了PD口的配置寄存器,都没有问题

使用特权

评论回复
17
食肉狼| | 2013-8-27 16:39 | 只看该作者
STM8S103的PD3用的我蛋疼

使用特权

评论回复
18
cjhk| | 2013-8-27 18:56 | 只看该作者
这个问题   以前我也蛋疼过   不知道是单片机问题   还是外围 电路问题     有点纠结

使用特权

评论回复
19
mycdh| | 2014-1-14 11:18 | 只看该作者
我用103K3的PD3使能485收发,发现置高,芯片串口无输出数据,注销掉置高语句 ,发送正常。当我用PD4作为使能端时,置高PD4,串口就有输出数据。
难道PD3还能影响到别的端口或内部电路吗?

使用特权

评论回复
20
a20084666| | 2015-10-13 00:25 | 只看该作者
我用做按键输入,带下拉检测不到高电平,不知道为啥

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

8219

帖子

8

粉丝