GC-IP201 驱动

数据手册官网上面

https://amac-chemnitz.com/index.php/en/products/interpolationsschaltkreise/93-gc-ip201b-en

STM32F103C8T6


翻译后的是

通信协议:


每个数据传输都通过主机处理器发送一个SPI字来启动。一个SPI字由4位操作码、4位硬件地址和最多8位数据组成。
只有当发送的硬件地址与GC‑IP201(B)存储的硬件地址相匹配时,操作码才会被接受。复位后,IC具有硬件地址
‘0000’。使用SETHWA命令可以将HWA<3:0> 的电压作为新的硬件地址写入IC。用于读取寄存器的操作码将在下一
个SPI访问时将数据输出到MISO,与新的SPI字中的硬件地址无关。

对GC‑IP201(B)中的寄存器进行访问时,以8位写入和16位读取方式进行。IC中的寄存器以32位组织。因此,在IC中
为读取操作实现了一个32位保持寄存器。待读取的数据通过SPI字RD0/ST传输到该保持寄存器。两个最低有效字节
的数据输出到MISO是在下一个SPI周期期间进行的。两个最高有效字节的数据输出到MISO是在RD1字传输到
MOSI后的SPI周期中进行的。通常,读取32位寄存器时依次执行RD0/ST、RD1和NOP指令。连续读取多个寄存器
时可以使用RD0–RD1–RD0–RD1…序列。写入寄存器时,首先使用SPI字WRA设置寄存器地址,然后可通过
WRD进行描述。32位寄存器的写入是逐字节进行的。

通信重点:


在读取寄存器时,32位寄存器数据的传输与IC内部流程同步进行。通过CFG2寄存器中的SYNC值,可以将时间点相
对于ADC采样时间点进行偏移。这样就可以进行等间隔测量,实现低延迟。同步等待期间,MISO输出为低电平。
如果CFG2寄存器中的ASYNC位被设置(异步模式),数据将在SEN信号的上升沿立即存储。与模拟信号的采样时
间失去关联。因此,可以实现更高的传输速度。对于读取MVAL、CNT、POSIT、STAT、CTRLG、CTRLO和
ADC寄存器,SYNC可以设置为任意值。默认值’00000’会导致计算计数值与SPI接口数据输出之间存在较小延迟。对
于读取PHI、DPHI、BQ和CADC寄存器,必须使用’00100’值。

通过配置位CFG3/SPISLOW可以启用对SPI输入信号SEN,SCK和MOSI的数字滤波。此时SCK的最大SPI时钟频率
将被限制在约fOSZ /4。

如何控制呢?

HAL_GPIO_WritePin(GPIOA,NRES_REST_Pin,GPIO_PIN_RESET);//复位HAL_Delay(100);HAL_GPIO_WritePin(GPIOA,NRES_REST_Pin,GPIO_PIN_SET);

我们先说写寄存器

根据协议和驱动信号,可以看到,图15,先写WRA,在写WRD。即可完成寄存器的写入。
根据8.1.2

WRA=0x8000+Adresse WRD=0xA000+Daten
假如,我们写CFG1寄存器,地址0x0C. 根据SPI时序,我们发0X8000 加上地址0x0C.所以我们写入的值是0x800C 一共16位,SPI一次发16位。等待后,根据时序,我们需要发WRD,也就是我们的数据,这样我们就完成了一个0x0C寄存器的写入。

实现代码

HAL_StatusTypeDefGC_IP201_WriteReg(uint8_treg_addr,uint8_tdata){uint16_ttx_data;HAL_StatusTypeDef status;// 1. SEN拉低,发送WRA(地址)HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_RESET);tx_data=0x8000|(reg_addr&0xFF);// WRA: 1000 + 0000 + 8位地址status=HAL_SPI_Transmit(&hspi1,(uint8_t*)&tx_data,1,100);HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_SET);if(status!=HAL_OK){returnstatus;}// 短暂延时(根据时序要求)HAL_Delay(1);// 2. SEN再次拉低,发送WRD(数据)HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_RESET);tx_data=0xA000|(data&0xFF);// WRD: 1010 + 0000 + 8位数据status=HAL_SPI_Transmit(&hspi1,(uint8_t*)&tx_data,1,100);HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_SET);returnstatus;}

我们在说读寄存器

根据图15读32位寄存器,读取需要发送RD0和RD1和NOP。RD0是0xC00C。然后发送0xE000,在发送0x0000。即可

实现代码

uint32_tGC_IP201_ReadReg(uint8_treg_addr){uint16_ttx_data;uint16_trx_low,rx_high;HAL_StatusTypeDef status;// 1. SEN拉低,发送RD0(地址)HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_RESET);tx_data=0xC000|(reg_addr&0xFF);// RD0: 1100 + 0000 + 8位地址status=HAL_SPI_Transmit(&hspi1,(uint8_t*)&tx_data,1,100);HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_SET);if(status!=HAL_OK){return0;}// 短暂延时HAL_Delay(1);// 2. SEN拉低,发送RD1,同时接收低16位数据HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_RESET);tx_data=0xE000;// RD1: 1110 + 0000status=HAL_SPI_TransmitReceive(&hspi1,(uint8_t*)&tx_data,(uint8_t*)&rx_low,1,100);HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_SET);if(status!=HAL_OK){return0;}// 短暂延时HAL_Delay(1);// 3. SEN拉低,发送NOP,同时接收高16位数据HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_RESET);tx_data=0x0000;// NOPstatus=HAL_SPI_TransmitReceive(&hspi1,(uint8_t*)&tx_data,(uint8_t*)&rx_high,1,100);HAL_GPIO_WritePin(SPI_NSS_GPIO_Port,SPI_NSS_Pin,GPIO_PIN_SET);if(status!=HAL_OK){return0;}// 组合32位数据:rx_high(高16位) + rx_low(低16位)return((uint32_t)rx_high<<16)|rx_low;}

此芯片,一个寄存器是32位。
写指定寄存器的32位。

HAL_StatusTypeDefGC_IP201_WriteReg32(uint8_treg_addr,uint32_tdata){HAL_StatusTypeDef status;// 写入低8位status=GC_IP201_WriteReg(reg_addr,data&0xFF);if(status!=HAL_OK)returnstatus;// 写入次低8位status=GC_IP201_WriteReg(reg_addr+1,(data>>8)&0xFF);if(status!=HAL_OK)returnstatus;// 写入次高8位status=GC_IP201_WriteReg(reg_addr+2,(data>>16)&0xFF);if(status!=HAL_OK)returnstatus;// 写入高8位returnGC_IP201_WriteReg(reg_addr+3,(data>>24)&0xFF);}

然后综上所述,配置好相应的寄存器就可以正常使用该芯片了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1191335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

‌大模型测试的“监控体系”:实时检测幻觉、偏见、泄露

一、监控体系是大模型测试的“生命线”‌ 在传统软件测试中&#xff0c;我们验证的是‌确定性逻辑‌&#xff1a;输入 → 执行 → 输出 → 断言。 而在大语言模型&#xff08;LLM&#xff09;时代&#xff0c;测试对象变为‌概率性生成系统‌&#xff1a;输入 → 概率分布 → …

智能窗户防撬报警系统仿真:proteus蜂鸣器实战

智能窗户防撬报警系统仿真&#xff1a;从干簧管到蜂鸣器的实战设计你有没有想过&#xff0c;家里的窗户其实是最容易被入侵的地方&#xff1f;防盗窗虽然结实&#xff0c;但影响美观、阻碍逃生。那有没有一种方式&#xff0c;既不破坏装修风格&#xff0c;又能实时感知“有人撬…

每10年一次的“开发者淘汰战”,自1969年就已开局!

每十年&#xff0c;总有人信心满满地宣称&#xff1a;“这次&#xff0c;我们终于可以让软件开发变得简单&#xff0c;不再需要那么多开发者了。”但现实是&#xff0c;我们真的不再需要开发者了吗&#xff1f;近日&#xff0c;资深开发者 Stephan Schwab 在《Why We’ve Tried…

055.多层图最短路(扩点)

扩点最短路,也叫分层图最短路建图的节点不是真实的位置,而是真实位置+在此处的状态一般还要用到状态压缩技巧核心在于如何扩点,如何到达,如何算距离习题 获取所有钥匙的最短路 leetcode 864节点表示状态 : 真实位…

Vivado License节点锁定设置:项目环境配置说明

Vivado 节点锁定许可配置实战指南&#xff1a;让 FPGA 开发环境稳如磐石你有没有遇到过这样的场景&#xff1f;早上刚打开电脑准备调试关键模块&#xff0c;Vivado 启动失败&#xff0c;弹出一串红色警告&#xff1a;“License checkout failed”。一查日志才发现&#xff0c;许…

‌AI模拟用户情绪波动:软件测试从业者的新测试范式

在当今以用户体验为核心的产品开发逻辑中&#xff0c;软件测试早已超越“功能正确性”的单一维度&#xff0c;逐步向‌情感可用性‌&#xff08;Emotional Usability&#xff09;和‌心理韧性测试‌&#xff08;Psychological Resilience Testing&#xff09;延伸。‌一、为什么…

记一次经典的反序列化漏洞(CVE-2017-10271)

关于WebLogic ​ WebLogic 是由 Oracle 公司开发的一款企业级 Java EE(现 Jakarta EE)应用服务器,广泛用于构建、部署和管理大型分布式企业应用。它提供高可用性、可扩展性和安全性,支持诸如 EJB、JMS、JTA、JDBC、…

Authentication is required but no CredentialsProvider has been registered 报错已解决

文章目录 Authentication is required but no CredentialsProvider has been registered 报错已解决项目场景问题描述原因分析1️⃣ Git 仓库是私有仓库2️⃣ Git 仓库地址&#xff08;uri&#xff09;配置错误3️⃣ 未配置 CredentialsProvider 解决方案方案一&#xff1a;配置…

Multisim14使用教程:快速理解直流电路搭建步骤

Multisim14实战入门&#xff1a;手把手教你搭出第一个直流电路你有没有过这样的经历&#xff1f;在模电实验课上&#xff0c;接了一堆导线&#xff0c;万用表一测——电压不对&#xff1b;反复检查&#xff0c;发现是电源正负极接反了。更糟的是&#xff0c;某个电阻还因为电流…

解决vscode中文输入法输入没有候选框问题

去掉勾选即可 参考https://blog.csdn.net/m0_47346543/article/details/154704448黄粱一梦,终是一空本文来自博客园,作者:hicode002,转载请注明原文链接:https://www.cnblogs.com/hicode002/p/19509148

大模型测试的“冷启动评估”:新模型上线前怎么测?

冷启动评估的紧迫性与定义 在人工智能时代&#xff0c;大模型&#xff08;如LLM&#xff09;的部署已成为企业核心能力&#xff0c;但新模型上线前的冷启动问题常被忽视。冷启动指模型首次响应请求时因初始化延迟导致的性能瓶颈&#xff0c;包括资源分配、依赖加载和计算图优化…

Error creating bean with name ‘xxxxxxxController‘: Injection of resource dependencies failed报错已解决

Error creating bean with name ‘XXXController’: Injection of resource dependencies failed 问题已解决&#xff1a;4 种高频原因全面排查指南 一、项目场景 在一次 Spring Boot MyBatis 的后台项目开发过程中&#xff0c;项目结构、依赖、配置看似全部完成&#xff0c;但…

2026中国智慧养老行业:老龄化浪潮下的刚性需求爆发

截至 2024 年末&#xff0c;中国 60 岁以上人口达3.1 亿&#xff0c;照护依赖人口五年内将增至4000 万 &#xff0c;护理员缺口超500 万&#xff0c;刚性需求全面爆发。2026 年市场规模预计突破8.3 万亿元&#xff0c;2030 年将达15.1 万亿元&#xff1b;八部门新政以科技赋能为…

通过agentscope在EKS部署远程沙盒和代理应用

参考资料https://runtime.agentscope.io/zh/tool.htmlAgentScope Runtime是一个面向 AI Agent 的全栈运行时,解决高效部署与服务化以及安全的沙箱化执行。 测试环境为python3.13,安装agentscope-runtime uv add &quo…

如何测试AI生成的邮件是否符合商务礼仪:软件测试从业者指南

AI邮件测试的必要性与挑战在AI工具&#xff08;如豆包AI、文心一言&#xff09;广泛应用于商务邮件生成的背景下&#xff0c;测试从业者面临新挑战&#xff1a;确保AI输出邮件符合专业礼仪&#xff0c;避免因文化误解、语气不当或格式错误导致沟通失误。 据统计&#xff0c;近4…

IDEA_pom.xml_spring-boot-maven-plugin爆红问题解决

文章目录IDEA中spring-boot-maven-plugin报红问题及解决方案项目场景问题描述原因分析解决方案1. 添加版本号2. 刷新 Maven 项目3. IDEA 重启&#xff08;必要时&#xff09;经验总结总结IDEA中spring-boot-maven-plugin报红问题及解决方案 在使用 IntelliJ IDEA 进行 Spring …

跨境电商防关联:从“单点隔离”到“系统化风控”一套打穿

很多卖家做防关联只停留在“换IP换浏览器”&#xff0c;结果仍然二审频繁、限流或资金风控。原因是平台判定关联不是只看某一个点&#xff0c;而是把设备指纹、网络链路、业务资料、资金履约、内容与行为拼成整体画像。要想稳定跑矩阵&#xff0c;必须把防关联做成“系统工程”…

全国现代物业管理人才培养赋能新质生产力发展研讨会 (MPMTT 2026)

全国现代物业管理人才培养赋能新质生产力发展研讨会&#xff08;MPMTT 2025&#xff09;将于2026年3月13日-15日在中国昆明隆重举行。MPMTT 2025 由昆明理工大学津桥学院主办&#xff0c;将针对物业管理的相关研究领域展开探讨&#xff0c;旨在为相关领域的专家学者&#xff0c…

玩转Synbo|为什么说质押是进入Club的关键动作

各位社区成员大家好&#xff0c;在进入Synbo体系过程中&#xff0c;质押是获取Club门票与绑定身份的关键动作。当你的质押数量达到某个Club设置的阈值&#xff0c;你就会获得这个Club的成员身份&#xff0c;并解锁&#xff1a;融资可见性、参与权限、激励分配关系&#xff0c;本…

Galaxy比数平台功能介绍及实现原理|得物技术

一、背景 得物经过10年发展&#xff0c;计算任务已超10万&#xff0c;数据已经超200PB&#xff0c;为了降低成本&#xff0c;计算引擎和存储资源需要从云平台迁移到得物自建平台&#xff0c;计算引擎从云平台Spark迁移到自建Apache Spark集群、存储从ODPS迁移到OSS。 在迁移时…