0

我正在尝试将华硕修补板 S 编程为 SPI 主机,并且从主机到从机微控制器的通信按预期工作,并且我能够将数据从华硕修补板 S SPI 主机发送到 STM32f140 SPI 从机. 我希望能够以两种方式读取数据,并且我尝试了一些方法,但它们似乎都不起作用。我正在使用 WiringPi 库(https://github.com/TinkerBoard/gpio_lib_c

当我使用模拟发现来查看两个微控制器之间的连接时,双向数据都很好 - RX 和 TX 数据都是正确的,所以问题一定是在读取我的主控上的数据。我的 tinkerboard 上的代码如下所示:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>

//#include <fcntl.h>
//#include <sys/ioctl.h>
//#include <linux/spi/spidev.h>

#include <wiringPi.h>
#include <wiringPiSPI.h>
#include <wiringTB.h> 

int main()
  {
 
wiringPiSetupGpio();

//asus_set_pin_mode(257,OUTPUT); //MOSI OUT
//asus_set_pin_mode(254,OUTPUT); //CLK OUT
asus_set_pin_mode(255, OUTPUT); //CS OUT
//asus_digitalWrite(257, LOW);
//asus_digitalWrite(254, LOW);
asus_digitalWrite(255,HIGH);
asus_set_pin_mode(256,INPUT);  
 
         uint8_t b=0;
        int spimode = 3;
        int spichannel = 1;
        int spispeed = 8000000;
uint8_t i=0;
int x;


 
        int fd = wiringPiSPISetupMode(spichannel,spispeed,spimode);
 

        if(fd==-1) {
            printf("Spi fail \n");
            return -1;
        }
 
        printf("\n SPI success \n");
 

        delayMicroseconds(1000);

while(1){

        unsigned char buf[4] = {1, 9, 0, 0};
        int8_t Req_header_MOSI[4] = {1, 9, 0, 0};
        unsigned char inbuf[4];


asus_digitalWrite(255,LOW);

for(i=0;i<4;i++){
     inbuf[i] = wiringPiSPIDataRW(spichannel, &buf[i], 1);

printf("%d",inbuf[i]);

}
delayMicroseconds(100);



 delayMicroseconds(1000);

asus_digitalWrite(255,HIGH);



printf("\n");
        delayMicroseconds(1000);

 
      }
}
 




在我的奴隶上,我按预期读取了 1 9 0 0 ,作为回报,我试图发送 5 6 7 8 但在主人身上收到 1 1 1 1 。

先感谢您

4

0 回答 0