如题,之前在 关于《BMC模组硬件指南》中ADC接口和PWM接口的问题 这篇帖子中提到了非天池场景下如何使用adc和pwm的接口。
这里有c接口和lua的接口,但这个是属于代码侧的。那如果要在sr文件中配置传感器,这部分的Scanner该如何去配置呢?有相应的配置示例吗?
如题,之前在 关于《BMC模组硬件指南》中ADC接口和PWM接口的问题 这篇帖子中提到了非天池场景下如何使用adc和pwm的接口。
这里有c接口和lua的接口,但这个是属于代码侧的。那如果要在sr文件中配置传感器,这部分的Scanner该如何去配置呢?有相应的配置示例吗?
首先需要将ADC作为一个bus,在root.sr中进行申明
在root.sr添加对象Adc_xxx
Adc类定义如下:
| prop | type | description |
|---|---|---|
| ScanRate | U32 | ADC采样频率,默认32768 |
| VoltRefSrc | U32 | 参考电压类型:0 外部参考电压;1 内部参考电压;默认1 |
| VoltRefVal | U32 | 参考电压值,单位毫伏,默认2400 |
拓扑中将Adc_1添加到bus中,并通过EXU连接器传递下去,传到你需要的板子的CSR。
在对应的板子CSR中,定义Adc器件
"Chip_Adc_xxx": {
"Address": xxx,
"AddrWidth": xxx,
"OffsetWidth": xxx
}
并把Adc器件挂在ADC总线下:
"ManagementTopology": {
"Anchor": {
...
"Adc_xxx": {
"Chips": [
"Chip_Adc_xxx"
]
}
...
}
}
然后Scanner就按照正常器件配置即可:
"Scanner_Adc_xxx": {
"Chip": "#/Chip_Adc_xxx",
"Offset": xxx,
"Size": xxx,
"Period": xxxx
}
BMC Studio应该支持配置,可以考虑使用BMC Studio进行辅助开发
将ADC作为一个bus配置,这个好理解,后续的步骤也和平常的一致。
但是在这种情况下的"Chip_Adc_xxx"的"Address"又该是什么呢?一共16路adc,难道就是写0~15或者1~16这样吗?
当前配置Chip主要是为了能访问
具体的链路在Scanner上进行配置,即Offset: 0、1、2、3对应不同的adc每一路
感谢张工。刚刚又想到了个问题,这个Scanner要读取几个字节,读出来的数据又要通过什么公式换算得到实际的电压结果。
具体取决于硬件吧,可以从4字节尝试一下,然后公式就从毫伏转成伏即可
请问这个外部参考电压,是哪个管脚输入呀,BMC模组规格书上好像没有写