9260 и adt7302 (датчик температуры с интерфейсом SPI)
Kuzemko |
|
|
|
|
|
|
|
Пункты: 370 |
Регистрация: 26.09.2009 |
Пол: Мужчина |
|
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 77333 |
Регистрация: 14.08.2009 |
|
|
|
У меня по крайней мере с такими параметрами probe вызывается
{ /* Termometr chip */
.modalias = "lm70",
.chip_select = 1,
.max_speed_hz = 10 * 1000 * 1000,
.bus_num = 1,
},
А это судя по разъему P14 должно быть именно так - spi1, ncsp1.
Нужно убрать .mode - режим в самом драйвере lm70 задается иначе probe с ошибкой вылетает, probe пока что у меня вылетает тут - в lm70 в ф-ции probe:
/* 3-wire link (shared SI/SO) for LM70 */
if (chip == LM70_CHIP_LM70 && !(spi->mode & SPI_3WIRE))
return -EINVAL;
думаю если это выкинуть только легче станет :) ваш чип как раз в 4wire режиме работает, в общем экспериментируйте :) Да и это тоже выкинуть
/* signaling is SPI_MODE_0 for both LM70 and TMP121 */
if (spi->mode & (SPI_CPOL | SPI_CPHA))
return -EINVAL;
и поставить нужный режим в структуре .mode. |
|
|
|
|
|
Kuzemko |
|
|
|
|
|
|
|
Пункты: 370 |
Регистрация: 26.09.2009 |
Пол: Мужчина |
|
|
Спасибо, буду экспериментировать. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 77333 |
Регистрация: 14.08.2009 |
|
|
|
Да там собственно работы на 15 мин :) выкинуть все лишнее и сдвинуть результирующий raw на 3 позиции :)
case LM70_CHIP_TMP121:
val = ((int)raw / 8) * 625 / 10;
break;
}
вот тут например на 8 не делить (деление на 8 равносильно сдвигу вправо на 3 - у вас и так уже данные в младших разрядах).
spi подключить по-человечески 4-wire как и положено чтобы писать в него можно было - ваш чип спать умеет, а это надо использовать :)
Вернее на вашем чипе правило преобраования будет другим, судя по исходникам в даташите
ADC_Temp_Code = make16(MSByte,LSByte); //16bit ADC code is stored ADC_Temp_Code.
ADC_Temp_Code_dec = (float)ADC_Temp_Code; //Covert to float for division.
if ((0x2000 & ADC_Temp_Code) == 0x2000) //Check sign bit for negative value.
{
TempVal = (ADC_Temp_Code_dec - 16384)/32; //Conversion formula if negative temperature.
}
else
{
TempVal = (ADC_Temp_Code_dec/32); //Conversion formula if positive temperature.
}
}while(True);
//Temperature value stored in TempVal.
} |
|
|
|
|
|
Kuzemko |
|
|
|
|
|
|
|
Пункты: 370 |
Регистрация: 26.09.2009 |
Пол: Мужчина |
|
|
|
|
|
|
|