牛卧堂MCU技术交流

标题: Mini51 I2C有問題 [打印本页]

作者: rechin    时间: 2014-2-14 18:28
标题: Mini51 I2C有問題
我解決掉UART無法正常使用
但無法解決I2C問題
請高手指點問題

UART_I2C.zip

2.71 MB, 下载次数: 1821


作者: admin    时间: 2014-2-15 09:37
具体描述下遇到I2C的什么問題
作者: rechin    时间: 2014-2-15 15:58
I2C不能正確送出資料
我的成是是MASTER端 送給SLAVE(ADDRESS:0x68 換算是0XD0) 一筆資料是0X 應該要得到一個Byte(字節)回來
但我拿是波器去看是沒動作的
更奇怪的是他動作顯示已經完成了
所以上來問問
作者: admin    时间: 2014-2-17 09:26
至少先要示波器上能量测到 I2C信号,证明启动了I2C, 再分析示波器信号对不对。

作者: rechin    时间: 2014-2-17 10:13
剛剛改兩個地方 SDA SCL應該是P3.4 P3.5
但是我量訊號結果是SDA一直沒有被拉下來 一直在High
int32_t I2C_SW_Send(uint8_t u8Address, uint8_t* p8Data, uint32_t u32ByteSize)
{
    uint32_t u32count = 0;
    if(u32ByteSize == 0)
        return 0;
   
    I2C_SW_SDA = 1;
    I2C_SW_CLK = 1;
    CLK_SysTickDelay(u32_I2C_SW_Delay);
    I2C_SW_SDA = 0;  <------並沒有拉LOW

作者: a_ziliu    时间: 2014-2-21 21:55
你是要用軟件的i2c,而不是硬件的i2c,建議你先上網看一下教程
http://www.nuvoton.com/NuvotonMO ... 7-bef0-81925bc2caf5

作者: chimera    时间: 2016-3-23 12:15
rechin 发表于 2014-2-17 10:13
剛剛改兩個地方 SDA SCL應該是P3.4 P3.5
但是我量訊號結果是SDA一直沒有被拉下來 一直在High
int32_t I2C_S ...
紅色地方修改再試試看吧!!!

/* SDA = GP1.4, CLK = GP1.5 */
#define I2C_SW_SDA    P34
#define I2C_SW_CLK    P35

uint32_t u32_I2C_SW_Delay;

/**
  * @brief Prepare to start software I2C
  * @param u32BusClock    I2C Bus Clock (Hz)
  * @retval 0     Success
  */
int32_t I2C_SW_Open(uint32_t u32BusClock)
{
    if(u32BusClock>500000)
        u32_I2C_SW_Delay = 1;         
    else
        u32_I2C_SW_Delay =500000/u32BusClock;    /* Compute proper divider for I2C clock */
        
    /* Configure P1.4 and P1.5 as open-drain mode */
    GPIO_SetMode(P3, 0x30, GPIO_PMD_OPEN_DRAIN);
   
    I2C_SW_SDA = 1;
    I2C_SW_CLK = 1;
    return 0;
}
作者: harvardx    时间: 2016-3-23 15:03
看下对应cpu的samplecode吧 什么都有
作者: ketose    时间: 2016-3-28 09:17
我用M058S没有问题。。。




















作者: iottech13    时间: 2016-7-27 09:27
我是個新手, 目前使用mini51, 想請問樓主, 您程式中的:
printf("+---------------------------------+\n");
    printf("|    Mini51 NuTiny Sample Code    |\n");
    printf("+---------------------------------+\n");
是顯示在keil中的Serial window1中, 還是那裏?

麻煩指教.
作者: cpf1232008    时间: 2016-7-27 10:10
iottech13 发表于 2016-7-27 09:27
我是個新手, 目前使用mini51, 想請問樓主, 您程式中的:
printf("+---------------------------------+\n") ...

楼主代码应该是显示在uart0中,把uart0通过ttl转232什么的连接到pc上就可以在pc用串口助手上看到




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2