Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用SPI实现GPS-ublox-6neo6与单片机的通信_Gps_Arduino_Microcontroller_Spi_Pic32 - Fatal编程技术网

利用SPI实现GPS-ublox-6neo6与单片机的通信

利用SPI实现GPS-ublox-6neo6与单片机的通信,gps,arduino,microcontroller,spi,pic32,Gps,Arduino,Microcontroller,Spi,Pic32,我正在使用一个GPS模块ublox-6Neo6,并试图使用SPI从pic32微控制器中提取数据。我使用GPIO引脚来实现这一点,这样SPI库就不存在了 显然,我所需要做的就是发送0xFF并读取同时返回的内容以获取数据。当我试着自己敲打它时,我发送0xFF,但我从GPS收到的只是0xFF返回 我还尝试实现SoftSPI库,因为我担心我试图发送和接收信息的速度太快,但类似地,当我发送0xFF时,我仍然从GPS接收0xFF 这是我的密码: #include <plib.h> #incl

我正在使用一个GPS模块ublox-6Neo6,并试图使用SPI从pic32微控制器中提取数据。我使用GPIO引脚来实现这一点,这样SPI库就不存在了

显然,我所需要做的就是发送0xFF并读取同时返回的内容以获取数据。当我试着自己敲打它时,我发送0xFF,但我从GPS收到的只是0xFF返回

我还尝试实现SoftSPI库,因为我担心我试图发送和接收信息的速度太快,但类似地,当我发送0xFF时,我仍然从GPS接收0xFF

这是我的密码:

#include <plib.h>  
#include <Math.h>
#include <p32xxxx.h> 

void setup() {
  pinMode( RB05_GPSmosi, OUTPUT );
  pinMode( RB02_GPSmiso, INPUT );
  pinMode( RB03_GPSsclk, OUTPUT );
  pinMode( RB04_GPScs  , OUTPUT );
  digitalWrite( RB04_GPScs, 1 );
  digitalWrite( RB03_GPSsclk, 0 );
}

void loop() {
  gpsHit();
}


void gpsHit() {
  char received = 0;

  digitalWrite(RB04_GPScs, LOW);

  int i = 0;
  for(i = 0; i < 8; i++) {
    digitalWrite(RB05_GPSmosi, ((0xFF >> (7-i)) & 0x01));
    digitalWrite(RB03_GPSsclk, 1);
    received |= digitalRead(RB02_GPSmiso) << (7-i);
    digitalWrite(RB03_GPSsclk, 0);
  }

  if((received & 0xFF) != 0xFF)
    Serial.println(received);

  digitalWrite(RB04_GPScs, HIGH);
}
#包括
#包括
#包括
无效设置(){
pinMode(RB05GPSMOSI,输出);
pinMode(RB02_GPSmiso,输入);
pinMode(RB03_GPSsclk,输出);
pinMode(RB04_GPScs,输出);
数字写入(RB04_GPScs,1);
数字写入(RB03_GPSsclk,0);
}
void循环(){
gpsHit();
}
void gpsHit(){
接收字符=0;
数字写入(RB04_GPScs,低);
int i=0;
对于(i=0;i<8;i++){
数字写入(RB05_GPSmosi,((0xFF>>(7-i))和0x01));
数字写入(RB03_GPSsclk,1);

已接收|=数字读取(RB02_GPSmiso)因此,我使用的不是SPI,而是UART实现Ublox LEA6T。但是,我可以说,如果没有天线或GPS接收器信号,您收到的NEMA看起来是有效的。如果您发布实际的SPI数字写入代码,我可能能提供更多帮助。您有权使用逻辑分析仪或示波器探测线路吗?

因此我我发现,每当我尝试重置设备时,我都忘记在尝试重置之前选择gps。另外,我在一栋大楼里,无法获得任何信号。因此,一旦我修复了这两个问题,gps工作正常。不过,我非常感谢您的回复。谢谢!
#include <SoftSPI.h>
#include <Math.h>
#include <p32xxxx.h> 

#define RB05_GPSmosi 21
#define RB04_GPScs   15
#define RB03_GPSsclk 20
#define RB02_GPSmiso 14

uint8_t recBuf[80];

SoftSPI gps;

void setup() {
  Serial.begin(9600);
  gps.begin(RB04_GPScs, RB05_GPSmosi, RB02_GPSmiso, RB03_GPSsclk);
  gps.setSpeed(80000);
  gps.setDirection(SSPI_SHIFT_LEFT);
  gps.setDelay(10);

  //Reset gps
  sendReset();
}

void loop() {
  int i = 0;
  for(i = 0; i < 80; i++) {
    Serial.print((char) recBuf[i]);
    recBuf[i] = 0;
  }
  Serial.println();

  gps.setSelect(LOW);
  gps.transfer(80, 0xFF, recBuf);
  gps.setSelect(HIGH);
}