找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[M051] Mini51 I2C有問題

  [复制链接]
跳转到指定楼层
#
rechin 发表于 2014-2-14 18:28:03 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
我解決掉UART無法正常使用
但無法解決I2C問題
請高手指點問題

UART_I2C.zip

2.71 MB, 下载次数: 2075

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 顶1 踩
回复

使用道具 举报

10#
cpf1232008 发表于 2016-7-27 10:10:32 | 只看该作者
iottech13 发表于 2016-7-27 09:27
我是個新手, 目前使用mini51, 想請問樓主, 您程式中的:
printf("+---------------------------------+\n") ...

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

使用道具 举报

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

麻煩指教.
回复 支持 反对

使用道具 举报

8#
ketose 发表于 2016-3-28 09:17:49 | 只看该作者
我用M058S没有问题。。。



















回复 支持 反对

使用道具 举报

7#
harvardx 发表于 2016-3-23 15:03:48 | 只看该作者
看下对应cpu的samplecode吧 什么都有
回复 支持 反对

使用道具 举报

6#
chimera 发表于 2016-3-23 12:15:58 | 只看该作者
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;
}
回复 支持 反对

使用道具 举报

5#
a_ziliu 发表于 2014-2-21 21:55:22 | 只看该作者
你是要用軟件的i2c,而不是硬件的i2c,建議你先上網看一下教程
http://www.nuvoton.com/NuvotonMO ... 7-bef0-81925bc2caf5
回复 支持 反对

使用道具 举报

地板
 楼主| rechin 发表于 2014-2-17 10:13:29 | 只看该作者
剛剛改兩個地方 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

点评

Test  发表于 2016-3-23 12:14
回复 支持 反对

使用道具 举报

板凳
admin 发表于 2014-2-17 09:26:20 | 只看该作者
至少先要示波器上能量测到 I2C信号,证明启动了I2C, 再分析示波器信号对不对。
牛卧堂
回复 支持 反对

使用道具 举报

沙发
 楼主| rechin 发表于 2014-2-15 15:58:59 | 只看该作者
I2C不能正確送出資料
我的成是是MASTER端 送給SLAVE(ADDRESS:0x68 換算是0XD0) 一筆資料是0X 應該要得到一個Byte(字節)回來
但我拿是波器去看是沒動作的
更奇怪的是他動作顯示已經完成了
所以上來問問
回复 支持 反对

使用道具 举报

楼主
admin 发表于 2014-2-15 09:37:24 | 只看该作者
具体描述下遇到I2C的什么問題
牛卧堂
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU