Changeset - f778f20fe9ed
[Not reviewed]
default
0 1 0
Ethan Zonca - 10 years ago 2014-08-21 22:07:24
ez@ethanzonca.com
Messing with SPI
1 file changed with 30 insertions and 50 deletions:
main.c
30
50
0 comments (0 inline, 0 general)
main.c
Show inline comments
 
@@ -42,7 +42,7 @@ char* itoa(int i, char b[]){
 
        shifter = shifter/10;
 
    }while(shifter);
 
    *p = '\0';
 
    do{ //Move back, inserting digits as u go
 
    do{ //Move back, inserting digits as you go
 
        *--p = digit[i%10];
 
        i = i/10;
 
    }while(i);
 
@@ -99,15 +99,6 @@ int main(void)
 
 
    while(1)
 
    {
 
        temp = SPI_I2S_ReceiveData(SPI2);
 
        //ssd1306_DrawString("Temp: ", 1, 40);
 
        char tempstr[5];
 
        itoa(temp, tempstr);
 
        ssd1306_DrawString("Temp: ", 3, 40);
 
        //char test = temp + 0x30;
 
        //sprintf(tempstr, "%d", test);
 
        ssd1306_DrawString(tempstr, 3, 70);
 
 
        //ssd1306_block_write();
 
 
        // Process sensor inputs [TODO: 5hz?]
 
@@ -150,22 +141,35 @@ int32_t d = 1;
 
// Process things
 
void process()
 
{
 
    // Read MAX temp sensor
 
    // Assert CS
 
    GPIO_ResetBits(MAX_CS);
 
    Delay(50);
 
 
    // Assert CS
 
    // This may not clock at all... might need to send 16 bits first
 
    uint8_t retval = 0;//SPI_I2S_ReceiveData(SPI2);
 
    SPI_I2S_SendData(SPI2, 0xAA); // send dummy data
 
    SPI_I2S_SendData(SPI2, 0xAA); // send dummy data
 
    uint16_t retval = SPI_I2S_ReceiveData(SPI2);
 
 
    char tempstr[9];
 
    itoa(retval, tempstr);
 
    ssd1306_DrawString("Temp: ", 1, 40);
 
    ssd1306_DrawString(tempstr, 1, 70);
 
 
 
    // Deassert CS
 
    GPIO_SetBits(MAX_CS);
 
 
    if((!retval || (temp & 0x2) != 0))
 
        return; // Comms error - this is happening right now
 
    {
 
        ssd1306_DrawString("!TempCOMMS", 3, 35);
 
        //return; // Comms error - this is happening right now
 
    }
 
 
    if((temp & 0x4)!= 0)
 
        return; // Open thermocouple
 
 
    else if((temp & 0x4)!= 0)
 
    {
 
        ssd1306_DrawString("!OpenThermocouple", 3, 40);
 
        //return; // Open thermocouple
 
    }
 
 
    temp = (temp & 0x7FF8) >> 5;
 
 
@@ -392,22 +396,22 @@ void init_spi(void)
 
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
 
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
 
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
 
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
 
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
 
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
 
    SPI_InitStructure.SPI_CRCPolynomial = 7;
 
    SPI_Init(SPI1, &SPI_InitStructure);
 
    SPI_Cmd(SPI1, ENABLE);           /* Enable the SPI  */   
 
 
    // MAX IC
 
    //SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx;
 
    SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx;
 
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
 
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; // Andysworkshop
 
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; // From andysworkshop
 
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; // same
 
    // Can be used for CS... SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
 
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
 
    //SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
 
    //SPI_InitStructure.SPI_CRCPolynomial = 7;
 
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // From andysworkshop
 
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // same
 
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
 
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
 
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
 
    SPI_InitStructure.SPI_CRCPolynomial = 7;
 
    SPI_Init(SPI2, &SPI_InitStructure);
 
    SPI_Cmd(SPI2, ENABLE);           /* Enable the SPI */
 
}
 
@@ -525,34 +529,10 @@ void init_gpio(void) {
 
 
  /*Configure GPIO pin : PA */
 
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
 
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
 
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
 
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
 
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz;
 
  GPIO_Init(GPIOA, &GPIO_InitStruct);
 
}
 
 
 
 
 
 
#ifdef  USE_FULL_ASSERT
 
 
/**
 
  * @brief  Reports the name of the source file and the source line number
 
  *   where the assert_param error has occurred.
 
  * @param  file: pointer to the source file name
 
  * @param  line: assert_param error line source number
 
  * @retval None
 
  */
 
void assert_failed(uint8_t* file, uint32_t line)
 
{ 
 
  /* User can add his own implementation to report the file name and line number,
 
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
 
 
  /* Infinite loop */
 
  while (1)
 
  {}
 
}
 
#endif
 
 
// vim:softtabstop=4 shiftwidth=4 expandtab 
0 comments (0 inline, 0 general)