Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
29.08.2012, 18:26
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Сообщение от Batisto4ka
|
Как можно "неправильно записать команду?", спи на 0,0 не работает, шлет оодни 0
|
Уважаемая, а вы вообще SPI использовали на этой плате и вообще ?
Проверьте еще раз линии SPI на предмет лишнего .
И пора бы заиметь лог.Анализатор . Спасает много времени и нервов у новичков.
Хотя бы тот же Logic_U...
__________________
Осторожно , злой кот
|
|
|
|
30.08.2012, 03:46
|
|
Прописка
Регистрация: 06.06.2008
Адрес: Приморье
Сообщений: 179
Сказал спасибо: 31
Сказали Спасибо 39 раз(а) в 32 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Сообщение от dosikus
|
А пленка не транспортировочная часом ?
|
Может как-то влиять на точность, но уж точно не на работоспособность.
|
|
|
|
30.08.2012, 10:27
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Batisto4ka, У вас не то же ли самое ?
https://kazus.ru/forums/showthread.php?t=68664
ЗЫ. Сейчас посмотрел на miniSTM32 китаезы используют только софт SPI ,
хотя на SPI1 висит и тач и SPI Flash .
Не зря же ...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 30.08.2012 в 10:44.
|
|
|
|
30.08.2012, 10:42
|
|
Временная регистрация
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
знаете, поставила таки cpol0, cpha0, SPI psc=256 и только увеличила задержку между чтениями/записью и раз на нсколько нажатий ловлю какие-то значения, а потом опять нули...сейчас буду пробовать софтварный спай, который выложил Solomiichuk на 3 странице этой ветки, что вы прислали
|
|
|
|
30.08.2012, 11:11
|
|
Прописка
Регистрация: 14.06.2012
Сообщений: 263
Сказал спасибо: 2
Сказали Спасибо 129 раз(а) в 103 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Блин, наконец-то она увеличила временные интервалы между посылками команд Ну ничего, еще немного - и всё получится, главное верить. Если увеличить интервалы между посылками команд да еще учесть, что полный цикл обмена составляет 24 цикла тактовой частоты интерфейса, да еще и контроллировать принимаемые байты на протяжении всего цикла обмена, чтобы засечь переход выхода высокий уровень, сигнализирующий о старте преобразования (должно приняться 0х07 во время отправки команды), то, может, скоро всё получится.
|
|
|
|
30.08.2012, 11:16
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Easyrider83, Паша, у тебя что за демо_борда ?
__________________
Осторожно , злой кот
|
|
|
|
30.08.2012, 11:20
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Сообщение от dosikus
|
Easyrider83, Паша, у тебя что за демо_борда ?
|
HY-MINI
Она пустая и проц слабенький, но я ее унавозил всякими фишками. Теперь там 16Мбит SPI Flash, микросхема компаса, датчик дистанции.
Демоборд подходит для изучения возможностей GLCD и тача. Кроме RTS и UART, есть еще USB и парочка кнопок. Бедная платка, но и цена смешная.
http://www.ebay.com/itm/STM32-STM32F...item337780420a
Я ее брал под конкретную задачу, где мне надо было приборную панель на ней сделать. Но проект забросил.
|
|
|
|
30.08.2012, 11:31
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Easyrider83, А тач весит отдельно или с чем то вместе ?
И тач точно ADS7843 ?
__________________
Осторожно , злой кот
|
|
|
|
30.08.2012, 11:32
|
|
Временная регистрация
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
я нашла самую главную ошибку
кроме того, что вчера я по подсказке инициализировала CS, я его инициализировала как вход ? теперь сделала пуш пул аут.
Продолжая мучать АППАРАТНЫЙ SPI, мои настройки и функции:
Код:
|
void SPI_Configuration (void)
{
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
/* DISABLE SPI1 */
SPI_Cmd(SPI1, DISABLE);
/* SPI1 Config -------------------------------------------------------------*/
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
/* Enable SPI1 */
SPI_Cmd(SPI1, ENABLE);
}
static void DelayUS(vu32 cnt)
{
uint16_t i;
for(i = 0;i‹cnt;i++)
{
uint8_t us = 12; /* ЙиЦГЦµОЄ12Ј¬ґуФјСУ1ОўГл */
while (us--) /* СУ1ОўГл */
{
;
}
}
}
static void WR_CMD (uint8_t cmd)
{
/* Wait for SPI1 Tx buffer empty */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,cmd);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
SPI_I2S_ReceiveData(SPI1);
}
static int RD_AD(void)
{
unsigned short buf,temp;
/* Wait for SPI1 Tx buffer empty */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,0x0000);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
temp=SPI_I2S_ReceiveData(SPI1);
buf=temp‹‹8;
DelayUS(100);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,0x0000);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
temp=SPI_I2S_ReceiveData(SPI1);
buf |= temp;
buf››=3;
buf&=0xfff;
return buf;
}
/int Read_X(void)
{
int i,predi;
T_CSCLR;
DelayUS(100);
WR_CMD(0x90);
DelayUS(1);
i=RD_AD();
T_CSSET;
do{
predi=i;
T_CSCLR;
DelayUS(100);
WR_CMD(0x90);
DelayUS(1);
i=RD_AD();
T_CSSET;
}while (i!=predi);
return i;
}
int Read_Y(void)
{
int i,predi, ;
T_CSCLR;
DelayUS(100);
WR_CMD(0xd0);
DelayUS(1);
i=RD_AD();
T_CSSET;
do{
predi=i;
T_CSCLR;
DelayUS(100);
WR_CMD(0xd0);
DelayUS(1);
i=RD_AD();
T_CSSET;
}while (predi!=i);
return i;
}
void TP_GetAdXY(int *x,int *y)
{
int adx,ady;
adx=Read_X();
DelayUS(1);
ady=Read_Y();
*x=adx;
*y=ady;
}
/************************************************** *****************************/
/*================================================= ================================================== ===========*/
void EXTI15_10_IRQHandler (void)
{
static uint16_t tsX, tsY;
if (EXTI-›PR & (1‹‹10)) // Прерывание от EXTI5?
{ EXTI-›PR |= (1‹‹10); // Сбросить флаг EXTI5.
DelayMs(2);
if ((GPIOA-›IDR & GPIO_Pin_10)==0)
TOUCHFLAG=1;
else
TOUCHFLAG=0;
}
}
void main (void)
{
static uint16_t* tsX;
static uint16_t* tsY;
Init_CLK();
InitTouchscreen();
while(1)
{
if (TOUCHFLAG)
{
TOUCHFLAG=0;
TP_GetAdXY(&tsX, &tsY);
}
}
} |
Готовлю результаты
|
|
|
|
30.08.2012, 11:33
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Помогите с Touch Screen на ADS7843
Сообщение от dosikus
|
Easyrider83, А тач весит отдельно или с чем то вместе ?
И тач точно ADS7843 ?
|
Да-да, все тоже самое.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:31.
|
|