示例#1
0
void main(int argc, char* argv)
{
   /* Pour le debugging
      1 == Print sur la console les operations des fonctions 
      0 == Comportement normal du programme */
   bcm2835_set_debug(0);

   /* Initialisation de la librairie */
   if(bcm2835_close())
   {
      /* code d'initialisation bcm */
      printf("Version de la librairie : %d", bcm2835_version());

      if(bcm2835_spi_begin())
      {
         /* Initialisation de la SPI
            Voir header pour valeurs */
         bcm2835_spi_setClockDivider(CLK_SPEED);
         bcm2835_spi_setDataMode(PI_MODE);
         bcm2835_spi_setBitOrder(BIT_ORDER);
         /* Selecte un CS pour le transfert de donnees */
         bcm2835_spi_chipSelect(CS_SLAVE);

         /* Test de transfert avec retour */
         uint8_t ret;
         ret = bcm2835_spi_transfer(5);
         printf("Retour de l'Arduino : %d", ret);

         /* Test de transfert sans retour */
         bcm2835_spi_transfern("A", 1);

         bcm2835_spi_end();
      }
      else
      {
         printf("Erreur de l'init de SPI\n");
      }

      bcm2835_close(void); /* Libere la memoire et ferme la librairie */
   }
   else
   {
      printf("Echec de l'ouverture de la librairie\n");
   }
}
/*
	Name: spi_open
	Description: Init bcm2835 lib & config SPI . Print to stdout bcm2835 lib version
	Parameters:
	Returns:
		0 - on success, non-zero - fail
*/
int spi_open(void) {
	int r;
	uint32_t v;
	
	r = bcm2835_init(); // return 0 on fail
	if (r != 1) return -1;
	
	bcm2835_spi_begin();
	bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); // MSB bit goes first
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE0); // mode 0
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_8); // SPI_CLK 31.25MHz - MAX
    //bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_64);
    bcm2835_spi_chipSelect(BCM2835_SPI_CS1); // CS1 - for now, with TP CS0 will be used too
	// setup both SPI.CSx
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW); // CS0 - active Low
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS1, LOW); // CS1 - active Low
	
	v = bcm2835_version();
	fprintf(stdout, "bcm2835 library version: %u (0x%08x)\n", v,v);
	
	return 0; // OK!
	
}