boltnut 发表于 2010-5-6 00:19:08

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

請問STM8S103F3 PB.4/PB.5可以當一般Open Drain
pins 使用嗎?
若可以,是否如下設定即可?
    // Init Port B
    /*
    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 狀況,該怎麼辦?

香水城 发表于 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",然后直接读这个端口即可。:D

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",然后直接读这个端口即可。:D 

感謝您指教!
請問

是說什麼要設為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
    /*
    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
    /*
    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 */
這樣子對嗎? 我還遺漏什麼沒注意呢?
 
页: [1]
查看完整版本: 請問STM8S103F3 PB.4/PB.5可以當一般Open Drain?