63
803
2345
初级工程师
英文规格书下载链接如下MCP3424英文规格书:
https://ww1.microchip.com/downloads/en/DeviceDoc/22088c.pdf
中文规格书下载参考MCP3421规格书(单通道)
2009版
https://bbs.**/jishu_2245219_1_1.html
2006版
MCP3421中文资料 (带I2C-电子电路图,电子技术资料网站
143956568aa76c2a81.png (22.76 KB ) 下载附件 2023-11-30 23:29 上传
143956568aa76c2a81.png (22.76 KB )
下载附件
2023-11-30 23:29 上传
使用特权
581726568aa863cb0e.png (139.01 KB )
2023-11-30 23:30 上传
378616568aa8c20520.png (167.25 KB )
125186568aa94dd0c5.png (51.37 KB )
292666568aac633a4a.png (54.86 KB )
2023-11-30 23:31 上传
611276568aad0550d1.png (427.83 KB )
/*************************************************************************** * @fn IIC_MCP3424_READ_16bit * * @brief 读取MCP3424当前通道的数据 * * @data 2018年06月05日 * * @param uint32_t *adcDate :当前通道的测量出来的数值 * * * @return uint8_t:当前通道的配置信息 *************************************************************************** */ uint8_t IIC_MCP3424_READ_16bit(int16_t *adcDate) { uint8_t readBuff[2] = {0}; uint8_t configMCP3424 = 0; IIC_Start(); IIC_Send_Byte(CMD_READ);//告知MCP3424进行数据读取 IIC_Wait_Ack(); readBuff[0] = IIC_Read_Byte(ACK);//第一字节为数据高位 readBuff[1] = IIC_Read_Byte(ACK);//第二字节为数据低位 configMCP3424 = IIC_Read_Byte(NACK);//第三字节为MCP3424的配置 IIC_Stop(); if((configMCP3424 & 0x80) == MCP342X_BUSY) { *adcDate = 0x7AAA; //此时MCP3424返回的数值为无效数值 } else { *adcDate = (int32_t)readBuff[0] << 8;//整合数据 *adcDate = (int32_t)readBuff[1] | *adcDate; } return configMCP3424; } /*************************************************************************** * @fn IIC_MCP3424_READ_18bit * * @brief 读取MCP3424当前通道的数据 * * @data 2018年06月05日 * * @param uint32_t *adcDate :当前通道的测量出来的数值 * * * @return uint8_t:当前通道的配置信息 *************************************************************************** */ uint8_t IIC_MCP3424_READ_18bit(int32_t *adcDate) { uint8_t readBuff[3] = {0}; uint8_t configMCP3424 = 0; IIC_Start(); IIC_Send_Byte(CMD_READ);//告知MCP3424进行数据读取 IIC_Wait_Ack(); readBuff[0] = IIC_Read_Byte(ACK);//第一字节为数据高位(数据长度为18bit) readBuff[1] = IIC_Read_Byte(ACK);//第二字节为数据中位 readBuff[2] = IIC_Read_Byte(ACK);//第三字节为数据低位 configMCP3424 = IIC_Read_Byte(NACK);//第四字节为MCP3424的配置 IIC_Stop(); if((configMCP3424 & 0x80) == MCP342X_BUSY) { *adcDate = 0xAAAAAAAA; //此时MCP3424返回的数值为无效数值 } else { //*adcDate = ((int32_t)readBuff[0] & 0x80) << 24 | *adcDate;//整合数据 *adcDate = ((int32_t)readBuff[0] & 0x01) << 16 | *adcDate;//整合数据 *adcDate = (int32_t)readBuff[1] << 8 | *adcDate; *adcDate = (int32_t)readBuff[2] | *adcDate; if(readBuff[0] & 0x80) { *adcDate = 0x0001FFFF - *adcDate; *adcDate = 0 - *adcDate; } } return configMCP3424; }
发表回复 本版积分规则 回帖后跳转到最后一页
2
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号
有测试过吗,我这个单个通道可以用,四个通道就不行了,知道怎么回事吗