SPI STM32 fullduplex - chyba ve funkci read

Fanda Kopriva info na elektronikavyvoj.cz
Sobota Červenec 5 09:52:12 CEST 2014


Dobry den
nejsem na army odbornik , ale pripada mi vyhodnocovani podminek nejak 
slozite.
Ja pouzivam pro cteni Gmetru toto.A ten timeout tam je zbytecny .
Nemate problem s MISO pinem ? (zkrat nebo odpojeni , pripadne chybna 
konfigurace portu)

     unsigned short SPIout (unsigned int spiznak)
    {
     unsigned int timout;
   SPI2_DR = spiznak;
   timout = 0;
   while ((!(SPI2_SR & 0x1)) && (timout<1000)) {timout++;};        // 
ISO flag  RXNE
       if (timout>998) Serror |= 4;
       return SPI2_DR;
    }


   v programu potom

              GPIOB_BSRR =GMCSB<<16;   //chip select
              SPIout(0xb);SPIout(0xb);             //zapis  adresy
              GMETRs = SPIout(0);                  // cteni statusu
              GPIOB_BSRR =GMCSB;           //chip select

   Fanda


Dne 4.7.2014 22:46, Michal Grunt napsal(a):
> Tak mám nějakou chybu ve funkci W5100_Read. Vrací mi to pořád jenom 0. Zkoušel jsem různé variace/úpravy co jsem našel na internetu, ale pořád mi to vrací nulu. Neví někdo kde by mohl být problém? W5100_Write funguje, protože jsem modul nakonfiguroval a ping běží. Děkuji.
>
> unsigned char W5100_Read(unsigned int addr)
> {
>   unsigned char data;
>   unsigned char dummy;
>
> GPIO_ResetBits(W5100_CS_PORT, W5100_CS_PIN);
> SPI_ReadWrite8(W5100_READ_OPCODE);  //0xff
> SPI_ReadWrite8((addr & 0xff00) >> 8);
> SPI_ReadWrite8((addr & 0xff));
> while( SPI1->SR & SPI_I2S_FLAG_BSY );
> temp = (uint8_t)SPI_ReadWrite8(0xff);
> GPIO_SetBits(W5100_CS_PORT, W5100_CS_PIN);
> return temp;
>
> }
>
> uint8_t SPI_ReadWrite8(uint8_t out) {
> while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) {
> }
> SPI_SendData8(SPI1, out);
> while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) {
> }
> return SPI_ReceiveData8(SPI1);
> }
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>



Další informace o konferenci Hw-list