你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

請問STM8S103F3 PB.4/PB.5可以當一般Open Drain?

[复制链接]
boltnut 提问时间:2010-5-6 00:19 /
請問STM8S103F3 PB.4/PB.5可以當一般Open Drain
pins 使用嗎?
若可以,是否如下設定即可?
    // Init Port B
    /*
    [2]101
           7 6 5 4 3 2 1 0
           | | | | | | | |
           | | | |_________ I2C SCL (Output)    Open drain output
           | | |___________ I2C SDA (Output)    Open drain output
    DDR    0 0 1 1 0 0 0 0
    CR1    0 0 0 0 0 0 0 0
    CR2    0 0 0 0 0 0 0 0
    */
    GPIOD->DDR = 0x30;
    GPIOD->CR1 = 0x00;
    GPIOD->CR2 = 0x00;
還有什麼要特別注意的事項嗎?   
若PB.5 要當software I2C SDA (bit-banging) 使用時,
對於input read 狀況,該怎麼辦?
收藏 评论2 发布时间:2010-5-6 00:19

举报

2个回答
香水城 回答时间:2010-5-6 11:24:50

RE:請問STM8S103F3 PB.4/PB.5可以當一般Open Drain?

STM8S103F3的PB.4/PB.5可以当普通Open Drain端口使用。
PB.5做软件I2C SDA时,要读入时需要先输出"1",然后直接读这个端口即可。
boltnut 回答时间:2010-5-9 14:15:04

回复:請問STM8S103F3 PB.4/PB.5可以當一般Open Drain?

回复第 2 楼 香水城于2010-05-06 03:24:50发表:
STM8S103F3的PB.4/PB.5可以当普通Open Drain端口使用。
PB.5做软件I2C SDA时,要读入时需要先输出"1",然后直接读这个端口即可。 

感謝您指教!
請問

是說什麼要設為1呢? 是指 GPIO->ODR 或 GPIO->DDR bit 5 要設為1呢?
依據RM0016 Page 100, CMOS SCHMITT TRIGGER 要GPIOB->DDR 為0
且ADC-TDR 為1 才致能,也才可以讀取Pin 是吧?
 
所以將讀取SDA 程式改寫為:
bool I2C_GetSDA (void)
{
    u8  bSDA;

    // Init Port B
    /*
    [2]101
           7 6 5 4 3 2 1 0
           | | | | | | | |
           | | | |_________ I2C SCL (Output)    Open drain output
           | | |___________ I2C SDA (Input)     Floating without interrupt
    DDR    0 0 0 1 0 0 0 0
    CR1    0 0 0 0 0 0 0 0
    CR2    0 0 0 0 0 0 0 0
    */
    GPIOB->DDR = 0x10;
    //GPIOB->CR1 = 0x00;
    //GPIOB->CR2 = 0x00;

    bSDA = GPIOB->IDR & 0x20;

    // Init Port B
    /*
    [2]101
           7 6 5 4 3 2 1 0
           | | | | | | | |
           | | | |_________ I2C SCL (Output)    Open drain output
           | | |___________ I2C SDA (Output)    Open drain output
    DDR    0 0 1 1 0 0 0 0
    CR1    0 0 0 0 0 0 0 0
    CR2    0 0 0 0 0 0 0 0
    */
    GPIOB->DDR = 0x30;
    //GPIOB->CR1 = 0x00;
    //GPIOB->CR2 = 0x00;

    return( bSDA );
} /* I2C_GetSDA */
這樣子對嗎? 我還遺漏什麼沒注意呢?
 
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版