如何在Pico i.MX7D上打开SPI

时间:2017-12-19 08:13:52

标签: android-things

在我使用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来重用我的逻辑?

1 个答案:

答案 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仅为每个引脚显示一个信号名称的原因。