久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1799|回復: 5
打印 上一主題 下一主題
收起左側

錦銳CA51 MCU的IIC問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:499742 發表于 2022-11-21 19:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大神們,錦銳MCU型號CA51F551S3單片機,普通IO口做IIC通訊時,用到的IIC  引腳IO口要設置成輸出還是輸入呢?我用普通IO口做IIC發現驅動PT2314控制沒反應,有誰用過嗎?謝謝解惑。附程序
#include "ca51f5sfr.h"
#include "gpiodef_f5.h"
#include "delay.h"
#include "i2c.h"

#define scl                  P02
#define sda                  P03


#define AddWr 0xa0//e  
#define AddRd 0xa1//f  

void   iic_delay(void)
{
    unsigned char i=15;//12
    while(i--);
}
//******************************************************************

unsigned char ACK(void)
{
   unsigned char time_1;
    sda=1;
          iic_delay();
    scl=0;
    iic_delay();
    scl=1;
          iic_delay();
    time_1=10;
    while(sda)
    {
                time_1--;
                if (!time_1)
                 {
                   scl=0;
       iic_delay();
                   return 0;
                 }
        } //ACK
    scl=0;
        iic_delay();

        return 1;
}
//*******************************************************************

void NOACK(void)
{
    sda=1;
          iic_delay();
    scl=1;
    iic_delay();
    scl=0;
    iic_delay();
}
/*
void ACK_2(void)
{
    sda=0;
        iic_delay();
    scl=1;
    iic_delay();
    scl=0;
    iic_delay();
}
*/
//*********************************************************************
void start(void)  
{        
        sda=1;
        iic_delay();
        scl=1;
        iic_delay();
        sda=0;
        iic_delay();
        scl=0;
        iic_delay();
  }
//*********************************************************************
void stop(void)  
{
        sda=0;
        iic_delay();
        scl=1;
        iic_delay();
        sda=1;
        iic_delay();
        scl=1;  
        iic_delay();
}


void  write_8bit(unsigned char dat)
{
    unsigned char i=8;

    scl=0;
        iic_delay();
    while (i--)
    {
                                M_LED = ~M_LED;
        sda=(bit)(dat&0x80);
        iic_delay();
        dat<<=1;
        scl=1;
                iic_delay();
        scl=0;
        iic_delay();
    }
}


unsigned char  read_8bit(void)
{
   unsigned char k;
         unsigned char i=8;

    scl=0;
          sda=1;
    iic_delay();

    while (i--)
    {
                                M_LED = ~M_LED;
        scl=1;
        iic_delay();
        k=(k<<1)|sda;
        iic_delay();
        scl=0;
                iic_delay();
    }
        return k;
}


void WrToROM(unsigned char Address,unsigned char Data)
{
   start();
   write_8bit(AddWr);   
   ACK();
   write_8bit(Address);
   ACK();
   write_8bit(Data);
   ACK();
   stop();
   Delay_50us(2);

}


unsigned char RdFROM(unsigned char Address)
{
   unsigned char Date;

   start();   
   write_8bit(AddWr);
   ACK();
   write_8bit(Address);
   ACK();
   start();
   write_8bit(AddRd);  
   ACK();
   (Date)=read_8bit();
   NOACK();
   stop();
   return Date;


功放CA51.rar

297.08 KB, 下載次數: 5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624769 發表于 2022-11-21 20:24 | 只看該作者
最好看手冊,不同的器件,要求不同,
大多器件,開漏模式+ 47K 上拉都可以控制。
回復

使用道具 舉報

板凳
ID:401564 發表于 2022-11-22 19:55 | 只看該作者
1,這個片子有硬件IIC,你可能用硬件IIC
2,雖說都是8051,但只是內核相同而已,我沒有認真看,不知道端口是什么結構,并不是所有的單片機都能像STC這樣,不用更改端口配置就能讀寫的有的單片機,要么只能讀.要么只能寫
你可以參考一下PIC的IIC程序,PIC的IIC是這樣工作的:向從機寫入數據時,先把端口設定成輸出,然后再開始寫入
從從機讀取數據時,先把端口設定成強上拉輸入模式,然后再開始讀取

void Write_Byte(unsigned char Byte)                        //寫入器件的應答信號由從機給出
{
        unsigned char i;
        unsigned int k=0;       
    TRISCbits.TRISC4=0;//SDA作為輸出,這個是PIC把端口設置成輸入的語句,不用管,知道這是更改端口配置就行了       
        for(i=0;i<8;i++)
                         {                               
                                if(Byte&0x80)SDA=1;
                                else SDA=0;
                                Delay();
                                SCL=1;
                                Delay();
                                SCL=0;
                                Delay();                                               
                                Byte<<=1;
                        }
    TRISCbits.TRISC4=1;//SDA作為輸入
        SCL=1;
        Delay();       
        SDA=1;       
        while((SDA==1)&&(k<1000))         //超時就不再等待應答
                {
                        k++;
                        Delay();
                }                                                 //等待SDA出現低電平,出現低電平就表示器件已經應答         
        SCL=0;
}

回復

使用道具 舉報

地板
ID:499742 發表于 2022-11-22 21:09 | 只看該作者
Y_G_G 發表于 2022-11-22 19:55
1,這個片子有硬件IIC,你可能用硬件IIC
2,雖說都是8051,但只是內核相同而已,我沒有認真看,不知道端口是什么 ...

謝謝你的回復,對我很大啟發。源程序是可以讀寫24C02,可能PT2314硬件線路有問題。
回復

使用道具 舉報

5#
ID:401564 發表于 2022-11-23 09:13 | 只看該作者
金滿堂 發表于 2022-11-22 21:09
謝謝你的回復,對我很大啟發。源程序是可以讀寫24C02,可能PT2314硬件線路有問題。

我以為你沒有驗證過呢
如果驗證過IIC程序,那么,IIC程序就是沒有問題的,問題就出現在PT2314
你可以把IIC的延時改成100mS的,寫入之前把一個端口拉低,寫入之后再拉高,通過LED或者其它來看一下,從機有沒有響應
如果從機有響應,那就是接下來的操作的問題
如果從機沒響應,要么是硬件問題,要么是從機地址問題
回復

使用道具 舉報

6#
ID:499742 發表于 2022-11-23 20:00 | 只看該作者
Y_G_G 發表于 2022-11-23 09:13
我以為你沒有驗證過呢
如果驗證過IIC程序,那么,IIC程序就是沒有問題的,問題就出現在PT2314
你可以把IIC ...

這個芯片我以前用STC10系列做過產品的,現在搬到錦銳MCU就不行,也可能像你說的放慢點速度看看
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人超碰| 美女国内精品自产拍在线播放 | 日韩欧美三区 | 欧美一区二区三区电影 | 欧美精品免费观看二区 | 亚洲视频精品 | 国产一级在线 | 天天操网| 亚洲草草视频 | 91电影| 国产乱码久久久 | 综合久久综合久久 | 风间由美一区二区三区在线观看 | 911精品国产 | 亚洲伊人久久综合 | 毛片在线免费 | 99热在这里只有精品 | 日韩精品一区二区三区四区视频 | 日韩欧美一级片 | www.788.com色淫免费 | 欧美在线观看一区 | 免费不卡av| 国产乱码精品一区二区三区中文 | 狠狠爱免费视频 | 91视在线国内在线播放酒店 | a看片| 一级片aaa| 国产精品视频久久 | www.亚洲精品 | 国产成人精品一区二区三区四区 | 欧美成人精品 | 9191成人精品久久 | 亚洲草草视频 | 成年人视频免费在线观看 | 日韩一区二区三区在线视频 | 中国一级特黄毛片大片 | 国产成人精品一区 | 东方伊人免费在线观看 | 欧美成人一区二免费视频软件 | 在线观看中文字幕 | 国产一区免费 |