• “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 打印

    广东11选5网上购买平台: [USB 控制器] cyusb3014应该怎么读写adc

    [复制链接]
    363|2
    跳转到指定楼层
    楼主
    cyusb3014通过i2c配置、读取adc(mcp3424),不知道有谁做过?不一定要是这个adc芯片,只要是adc就行,现在我的一些代码逻辑可能有问题,一直不能读取到数据。
    沙发
     楼主 | 2019-1-30 14:51 | 只看该作者
    主要用到的读写是这两个write和read
    AD_Write(adc_i2c_addr_write,chal0_config);
    CyU3PBusyWait(700000);
      AD_Read (adc_i2c_addr_read, buffer_0);
    下面是定义:
    void AD_Write (uint8_t slaveAddr,uint8_t data)

    {
        CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
        CyU3PI2cPreamble_t preamble;
        uint8_t buf[1];

        buf[0] = data;
        preamble.buffer[0] = slaveAddr;
        preamble.buffer[1] = buf[0];  //一旦写入配置,配置信息字节之后的字节都将会忽略
        preamble.length    = 2;
        preamble.ctrlMask  = 0x0000;

        status = CyU3PI2cTransmitBytes (&preamble, buf, 1, 0);
        if(status == CY_U3P_SUCCESS)
                {
                        status = CyU3PI2cWaitForAck(&preamble, 0);
                }
        CyU3PBusyWait(5) ;//CyU3PThreadSleep(10);//100.200:color not right.(speed)

    }



    void AD_Read (uint8_t slaveAddr, uint8_t *buf)
    {
        CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
        CyU3PI2cPreamble_t preamble;
        preamble.buffer[0] = slaveAddr ;
       // preamble.buffer[1] = regAddr;
        preamble.buffer[1] = slaveAddr;
        preamble.length    = 2;
        preamble.ctrlMask  = 0x0001;   /* slaveAddrPos: Send start bit after 1 byte of preamble.!! */


        status = CyU3PI2cReceiveBytes (&preamble, buf, 3, 0);

        while(buf[2] & 0x80)
                {
                status = CyU3PI2cReceiveBytes (&preamble, buf, 3, 0);
                }
        CyU3PThreadSleep (1);

    }

    板凳
     楼主 | 2019-1-30 14:51 | 只看该作者
    两个函数的定义因为是复制来的,有一些多余的东西没有删除,但是应该不影响逻辑。至于i2c的设备地址和寄存器地址,设备地址是有的,但是寄存器地址好像没有,因为这个adc(mcp3424)的datasheet上面是说,当主器件发送读命令,adc输出转换值和配置数据。没有提到是哪个寄存器。就以下的代码来说,运行起来获取不到数据,不知为何?
    还有一个问题,preamble.ctrlMask  到底是什么意思,用来干什么的,一直不太明白?希望各位献言献策,讨论一下,感谢大家!
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07