比斯玛卡 Raspberry Pi 4
BCM2835 Raspberry Pi 4
我正在使用库 bcm2835 1,它可以工作,我可以在终端上看到如何绘制来自传感器的 126 个数据信息,但从那时起我收到了这个:
bcm2835_init: gpio mmap failed: Cannot allocate memory
有谁知道问题是什么或如何解决?我认为这是由于图书馆造成的,但不确定如何解决。
我正在使用 SPI 来接收数据
#include <bcm2835.h>
#include <stdio.h>
char n = 0;
void escriure_csv(char valor){
}
int main()
{
FILE * fp;
fp = fopen ("file.csv", "w+");
for(int i=0;i<130;i++){
bcm2835_init();
bcm2835_spi_begin();
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_1024);
bcm2835_spi_chipSelect(BCM2835_SPI_CS0);
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);
uint8_t send_data = 0xB3; //ens dona igual perque nomès ens interesa el que torna
uint8_t read_data = bcm2835_spi_transfer(send_data);
//printf("Read back from SPI: 0x%02X.\n", read_data);
//transformem al que volem
//els canvis seran mV per lo tant enlloc de *2.5 hi fem fer 2
uint8_t mV = (read_data*250)/1024; //en cas que tornes un 0 es perque el resultat es - o 0.
printf("mV: %u\n", mV);
n+=1;
fprintf(fp,"%d",mV);
fprintf(fp,"\n");
//escriure_csv(mV);
}
fclose(fp);
return 0;
}
正如评论之一所说,这里的问题是我在每次迭代时都初始化 SPI,我不得不将它放在 for 循环之外。
我正在使用库 bcm2835 1,它可以工作,我可以在终端上看到如何绘制来自传感器的 126 个数据信息,但从那时起我收到了这个:
bcm2835_init: gpio mmap failed: Cannot allocate memory
有谁知道问题是什么或如何解决?我认为这是由于图书馆造成的,但不确定如何解决。 我正在使用 SPI 来接收数据
#include <bcm2835.h>
#include <stdio.h>
char n = 0;
void escriure_csv(char valor){
}
int main()
{
FILE * fp;
fp = fopen ("file.csv", "w+");
for(int i=0;i<130;i++){
bcm2835_init();
bcm2835_spi_begin();
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_1024);
bcm2835_spi_chipSelect(BCM2835_SPI_CS0);
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);
uint8_t send_data = 0xB3; //ens dona igual perque nomès ens interesa el que torna
uint8_t read_data = bcm2835_spi_transfer(send_data);
//printf("Read back from SPI: 0x%02X.\n", read_data);
//transformem al que volem
//els canvis seran mV per lo tant enlloc de *2.5 hi fem fer 2
uint8_t mV = (read_data*250)/1024; //en cas que tornes un 0 es perque el resultat es - o 0.
printf("mV: %u\n", mV);
n+=1;
fprintf(fp,"%d",mV);
fprintf(fp,"\n");
//escriure_csv(mV);
}
fclose(fp);
return 0;
}
正如评论之一所说,这里的问题是我在每次迭代时都初始化 SPI,我不得不将它放在 for 循环之外。