在我使用RPi3的Android Things项目中,我将MCP3008 ADC分别连接到SPI CS / MISO / MOSI / SCLK引脚BCM8 / BCM9 / BCM10 / BCM11,打开它们service.openGpio(<pin>)
并定期扫描以读取模拟输入连接的锅。完整来源:https://github.com/tomaszrykala/MidiMixerAndroidThings/blob/master/things/src/main/java/com/tomaszrykala/midimixerandroidthings/control/adc/MCP3008.java
我正在尝试使用Pico i.MX7D板获得相同的结果,但我是否尝试使用"SPI3 (SS0)"
或"SPI3.0"
或GPIO6_IO26
打开CS端口我得到的每一个时间android.os.ServiceSpecificException: Unknown I/O name SPI3 (SS0) (code 19)
(用以上任何一个例子替换名称)。
有没有办法通过在Pico上打开SPI gpio来重用我的逻辑?
答案 0 :(得分:1)
在Android Things中,信号名称与功能相关联。 RPi3板使用动态pinmux支持,允许外设I / O在运行时打开相同的引脚以实现备用功能。但是,每个函数都有一个唯一的信号名称(例如 let TRANSLATE_API = "https://translation.googleapis.com/language/translate/v2"
let GOOGLE_CLOUD_API_KEY = "AIzaSyA6fNXxVwUphAGnZar1v13z-OYZFxYVJB4"
let urlParams:[String : Any] = [
"target": target,
"q": textToTranslate,
"key": GOOGLE_CLOUD_API_KEY,
"source": source]
let bundleIdentifier = Bundle.main.bundleIdentifier!
let headers:[String : String] = ["Content-Type": "application/json", "X-Ios-Bundle-Identifier": bundleIdentifier]
// Fetch Request
let urlString = TRANSLATE_API
// Fetch Request
Alamofire.request(urlString, parameters: urlParams)
.validate()
.responseJSON { (response) in
switch(response.result) {
case .success(_):
if response.result.error != nil {
completion(false, response.result.error! as! String)
}
if let json = response.result.value as? [String: Any] {
if let data = json["data"] as? [String: Any] {
if let translations = data["translations"] as? [[String:Any]] {
let translatedTextDict = translations[0]
if let result = translatedTextDict["translatedText"] as? String {
completion(true, result)
}
}
}
}
break
case .failure(_):
completion(false, (response.result.error?.localizedDescription)!)
break
}
}
和BCM8
是相同的物理引脚)。这就是为什么pinout diagram有一个表格,为某些引脚提供了多个信号名称。
目前Pico板没有内部pinmux支持,因此每个引脚都没有备用信号。每个引脚都有一个专用功能,这就是pinout diagram仅为每个引脚显示一个信号名称的原因。