ایول دیدمش و تابع رو اضافه کردم درست شد!
دسدت طلا حاج سعید آقا
سطحي و كار راه انداز
دقيق و حرفه اي
ایول دیدمش و تابع رو اضافه کردم درست شد!
دسدت طلا حاج سعید آقا
ویرایش توسط MMBMMB20 : 09-11-2013 در ساعت 21:13
مهندس رنگ هارو توی دستور ها نشون نمیده!
مثلا توی همین دستور های زیر
[PHP]
LCD_Clear(LGRAY);
LCD_Clear(WHITE);
LCD_Clear(GRAY);
LCD_Clear(WHITE);
LCD_Clear(BRRED);
LCD_Clear(WHITE);
LCD_Clear(BROWN);
LCD_Clear(WHITE);
LCD_Clear(CYAN);
LCD_Clear(WHITE);
LCD_Clear(MAGENTA);
LCD_Clear(WHITE);
LCD_Clear(BLACK);
LCD_Clear(YELLOW);
[/PHP]
فقط رنگ های آبی پرنگ و آبی آسمانی و سبز و سفید و سیاه نمایش میده!!
نه زردی نه قهوه ای و نه بقیه؟!!!
ایراد از کجاست؟
روی این پروژه توی این آدرس توی CD شرکت
F:\Example\MIN stm32 tft 5 inch\5TFT__16BIT\project\RVMDK\5LCD_¦¦++.uvproj
رنگ ها رو عالی نشون میده!
ولی توی
(35) Mini_ touch screen test (7-inch)
این پروزه نمایش رنگ مشکل داره این از چیه؟؟؟
ویرایش توسط MMBMMB20 : 21-10-2013 در ساعت 15:52
دوستان رنگ ها در این پروژه
(35) Mini_ touch screen test (7-inch)
داخل CD شرکت
درست شد
این مهندسی معکوس چی کا را که نمی کنه!!!!
سلام
ربطی به میکرو نداره شما برای میکروی خودت پروژه درست کن و فقط لایبرری السیدی رو به پروژت اضافه کن
*** اللّهم عجّل لولیک الفرج ***
دوستان کمک کنید؟؟؟
برای خاموش کردن lcd
زا چه دستور هایی باید استفاده کرد ؟؟
من میخام BACKLight هم خاموش بشه؟؟
حالت ایتندبای مونیتور؟؟؟
روی درایور 40 پین فروشگاه 2تا جامپر هستش کدومش رو فعال کنم؟؟؟
J2 <<=== SSD-PWM
J1 <<=== MCU-PWM
????
سلام
كي با اين گروني حال سفر داره، مگه اينكه پول سفر يكي ديگه بده اونوقت سفر به آدم ميچسبه!
البته اگه ديتاشيت SSD1963 رو بخونيد خودتون هم به راحتي ميتونيد اين كارهايي كه گفتيد رو انجام بدين!
حالا بگذريم...
براي خاموش كردن LCD كامند 0x28 رو به SSD1963 بفرست.( صفحه 29 ديتاشيت)
براي حالت استندباي كامند 0x10 رو به SSD1963 ارسال كن.(صفحه 27 ديتاشيت)
بقيه موارد هم تو ديتاشيت هست فقط كافيه بگردين!
ویرایش توسط sadmonew : 21-10-2013 در ساعت 10:34
_____________________________________
_____________________________________
حاج صادق آقا این دوتا دستور رو خوندم مانوال SSD1963 رو هم مطالعه کردم و نتیجه چند خط زیر هستش که هر وقت میخامشون فراخوان میکنم ولی بک لایت خاموش نمیشه السیدی خاموش میشه ولی بک لایت روشن میمونه چی کارش کنم ؟
جامپر j4 رو هم اتصال کوتاه کردم
تا با دادن فرمان از stm32 به SSD1963 بتونم PWM رو روی SSD1963 برای کنترل بک لایت السیدی فعال کنم!!
ولی کما کان نتیجه حاصل نیست؟؟
مهندس مشکلی توی LCD_Init من هستش؟
خصوصا قسمت PWM ??
[PHP]
void LCD_Init(void)
{
LCD_Configuration();
#define LCD_WriteCom LCD_WR_REG
#define LCD_WriteRAM LCD_WR_DATA
#define TimeDelay(x) Delay_10ms(x/2)
/*ssd1963¼Ä´æÆ÷ÅäÖÃ*/
LCD_WriteCom(0x00E2);
LCD_WriteRAM(0x0023);
// Set PLL with OSC = 10MHz (hardware)
// Multiplier N = 35, VCO (>250MHz)= OSC*(N+1), VCO = 360MHz
// LCD_WriteRAM(0x0001);
LCD_WriteRAM(0x0002); // Divider M = 2, PLL = 360/(M+1) = 120MHz
LCD_WriteRAM(0x0004); // Validate M and N values
// TimeDelay(40);
LCD_WriteCom(0x00E0); // PLL enable
LCD_WriteRAM(0x0001);
// TimeDelay(40);
TimeDelay(1);
LCD_WriteCom(0x00E0);
LCD_WriteRAM(0x0003);
TimeDelay(50);
LCD_WriteCom(0x0001); // software reset
TimeDelay(50);
LCD_WriteCom(0x00E6); //PLL setting for PCLK, depends on resolution
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for AT070TN92 is 34MHz
//34MHz = 120MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 300000 (0x0493E0)
LCD_WriteRAM(0x0004);
LCD_WriteRAM(0x0093);
LCD_WriteRAM(0x00e0);
LCD_WriteCom(0x00B0); //LCD SPECIFICATION
LCD_WriteRAM(0x0020);
LCD_WriteRAM(0x0000);
LCD_WriteRAM((HDP>>8)&0X00FF); //Set HDP
LCD_WriteRAM(HDP&0X00FF);
LCD_WriteRAM((VDP>>8)&0X00FF); //Set VDP
LCD_WriteRAM(VDP&0X00FF);
LCD_WriteRAM(0x0000);
// TimeDelay(50);
LCD_WriteCom(0x00B4); //HSYNC
LCD_WriteRAM((HT>>8)&0X00FF); //Set HT
LCD_WriteRAM(HT&0X00FF);
LCD_WriteRAM((HPS>>8)&0X00FF); //Set HPS
LCD_WriteRAM(HPS&0X00FF);
LCD_WriteRAM(HPW); //Set HPW
LCD_WriteRAM((LPS>>8)&0X00FF); //Set HPS
LCD_WriteRAM(LPS&0X00FF);
LCD_WriteRAM(0x0000);
// TimeDelay(50);
LCD_WriteCom(0x00B6); //VSYNC
LCD_WriteRAM((VT>>8)&0X00FF); //Set VT
LCD_WriteRAM(VT&0X00FF);
LCD_WriteRAM((VPS>>8)&0X00FF); //Set VPS
LCD_WriteRAM(VPS&0X00FF);
LCD_WriteRAM(VPW); //Set VPW
LCD_WriteRAM((FPS>>8)&0X00FF); //Set FPS
LCD_WriteRAM(FPS&0X00FF);
// TimeDelay(50);
LCD_WriteCom(0x00BA);
LCD_WriteRAM(0x0005);//0x000F); //GPIO[3:0] out 1
// TimeDelay(50);
LCD_WriteCom(0x00B8);
LCD_WriteRAM(0x0007); //GPIO3=input, GPIO[2:0]=output
LCD_WriteRAM(0x0001); //GPIO0 normal
// TimeDelay(50);
LCD_WriteCom(0x0036); //rotation
// LCD_WriteRAM(0x0008);
LCD_WriteRAM(0x0000);
// TimeDelay(50);
LCD_WriteCom(0x00F0); //pixel data interface
LCD_WriteRAM(0x0003);
TimeDelay(50);
// TimeDelay(50);
LCD_WriteCom(0x0029); //display on
// TimeDelay(50);
LCD_WriteCom(0x00BE); //set PWM for B/L
LCD_WriteRAM(0x00ff); // set PWM signal frequency to 170Hz when PLL frequency is 100MHz
LCD_WriteRAM(0x0080); // PWM duty cycle (50%)
LCD_WriteRAM(0x0001);
LCD_WriteRAM(0x0009); // 0x09 = enable DBC, 0x01 = disable DBC
// LCD_WriteRAM(0x00D0); ' //dynamic backlight
// TimeDelay(50);
LCD_WriteRAM(0x000D);
LCD_WriteRAM(0x00FF);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x0000);
// TimeDelay(50);
// LCD_WriteCom(0x00d0);//ÉèÖö¯Ì¬±³¹â¿ØÖÆÅäÖÃ
// LCD_WriteRAM(0x000d);
// TimeDelay(50);
////
/*
LCD_WriteCom(0x00BE); //set PWM for B/L
LCD_WriteRAM(0x0001);//06 frequency
LCD_WriteRAM(0x00FF);//C0 duty
//LCD_WriteRAM(0x0009);//bit[3]DBC enable,bit[0]PWM enable
//LCD_WriteRAM(0x00FF);//C0 DBC manual brightness
///
LCD_WriteRAM(0x0010);
///LCD_WriteRAM(0x0088);//10 DBC minimum brightness
LCD_WriteRAM(0x0000);//08 Brightness prescaler
LCD_WriteCom(0x00d4);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x001C);
LCD_WriteRAM(0x0020);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x0046);
LCD_WriteRAM(0x0050);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x00A8);
LCD_WriteRAM(0x00C0);
LCD_WriteCom(0x00d0);
//WriteData(0x000D);//DBC Aggressive mode
//LCD_WriteRAM(0x0001);//DBC disable
////
*/
LCD_Clear(RED);
}
[/PHP]
مهندس این قسمتش ایراد داره ؟ راهنمایی می کنی؟؟
[PHP]
LCD_WriteCom(0x00BE); //set PWM for B/L
LCD_WriteRAM(0x00ff); // set PWM signal frequency to 170Hz when PLL frequency is 100MHz
LCD_WriteRAM(0x0080); // PWM duty cycle (50%)
LCD_WriteRAM(0x0001);
LCD_WriteRAM(0x0009); // 0x09 = enable DBC, 0x01 = disable DBC
// LCD_WriteRAM(0x00D0); ' //dynamic backlight
// TimeDelay(50);
LCD_WriteRAM(0x000D);
LCD_WriteRAM(0x00FF);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x0000);
[/PHP]
حاج صادق مهندس جان هل من ناص ینصرونی؟
دوستان درگذشت ناگهاني استاد فرخنده پادگان مكان .. دو لووپ رو به همه تبريك وتسليت ميگم
ميگن سرش باز بوده گرفتنش
ویرایش توسط alishekarriz : 25-10-2013 در ساعت 23:47
سلام
دوستان من براي راه اندازي Spi2 كه روي پاي هاي B13~15 هست هر تنظيمي انجام ميدم هيچ كلاكي فعال نميشه
ميخوام با Adc خارجي ارتباط بگيرم
ممنون ميشم راهنمايي بفرماييد.
[PHP]
[/PHP]
#include "stm32f10x.h"
#include "KS0108.h"
#include "graphic.h"
#define SYS_CLK 72
#include "delay.c"
#include "image_2.h"
#include "stm32f10x_spi.h"
#include "stm32f10x_adc.h"
#include <stdio.h>
char outstr[128] = { '\x00' };
double milliohm = 255.02351;
#define AD_CS GPIO_Pin_6
#define AD_Reset GPIO_Pin_7
#define AD_RDY GPIO_Pin_8
void AD7708_Configuration(void);
void ReadData(void);
void Int_ADC_Configuration(void);
int long ReadADCData = 0;
int ReadADRegister = 0;
int IntADCData = 0;
SPI_InitTypeDef SPI_InitStructure;
//************************************************** ***********************//
// KS0108 Driver
// ************************************************** ***********************//
char x = 'R' ;
int r,r2,dark,dark2;
int main(void)
{
GPIO_InitTypeDef ITD;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
RCC_PLLCmd(DISABLE);
RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9) ;
RCC->CFGR|=0x0002;
RCC_PLLCmd(ENABLE);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE) ;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE) ;
GPIO_StructInit(&ITD);
ITD.GPIO_Pin = GPIO_Pin_All;
ITD.GPIO_Speed = GPIO_Speed_2MHz;
ITD.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &ITD);
GPIO_Init(GPIOB, &ITD);
GPIO_SetBits(GPIOC,GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_10);
GLCD_Initialize();
while(1)
{
AD7708_Configuration();
ReadData();
for(r=1 ;r<200 ; r++){
milliohm =IntADCData;
sprintf(outstr, "%.1f mohm ", milliohm);
GLCD_GoTo(18,6);
GLCD_WriteString(outstr);
}
// delay(100000);
}
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void AD7708_Configuration()
{
GPIO_InitTypeDef GPIO_InitStructure;
/*Enable GPIOC & SPI2 Clock*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2|RCC_APB 1Periph_PWR,ENABLE);
//RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM2EN|RCC_APB1 ENR_PWREN,ENABLE);
// PB13 ------> SPI2_SCK
// PB14 ------> SPI2_MISO
// PB15 ------> SPI2_MOSI
//SPI pin config for spi function Clk | MOSI | MISO
GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_13|GPIO_Pin_ 15);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOB,& GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_14);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOB,& GPIO_InitStructure);
/*Config RDY (PortC.8) For AD7708*/
GPIO_InitStructure.GPIO_Pin=AD_RDY;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOC,& GPIO_InitStructure);
/*Config CS (PortC.6) & Reset (PortC.7) For AD7708*/
GPIO_InitStructure.GPIO_Pin=(AD_CS | AD_Reset);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOC,& GPIO_InitStructure);
/*Config Spi For AD7708*/
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lin es_FullDuplex;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRa tePrescaler_2;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_CRCPolynomial= 7;
SPI_Init(SPI2,& SPI_InitStructure);
SPI_Cmd(SPI2,ENABLE);
GPIO_SetBits(GPIOC,AD_Reset);
GPIO_ResetBits(GPIOC , AD_CS);
/* Send Data To Communications Register For Config */
SPI_I2S_SendData(SPI2,0xC0); /* Select Config For Status Register */
ReadADRegister = SPI_I2S_ReceiveData(SPI2); /* Read From AD7708 */
SPI_I2S_SendData(SPI2,0x81); /* Select Config For Mode Register */
SPI_I2S_SendData(SPI2,0x03); /* write In AD7708 & Selected 8 Input Channel Continuous Conversion */
SPI_I2S_SendData(SPI2,0x82); /* Select Config For ADC Control Register */
SPI_I2S_SendData(SPI2,0x07); /* write In AD7708 & Select AIN1 & ADC Input Range 2.56v */
SPI_I2S_SendData(SPI2,0x83); /* Select Config For Filter Register */
SPI_I2S_SendData(SPI2,0x0D); /* write In AD7708 & Select FADC=105.3 Hz & TADC=9.52 ms */
SPI_I2S_SendData(SPI2,0xC4); /* Select Config For ADC Data Register */
}
/*Read 16Bit Data With SPI2*/
void ReadData()
{
SPI_Cmd(SPI2,DISABLE);
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lin es_FullDuplex;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRa tePrescaler_2;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_16b;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_CRCPolynomial= 7;
SPI_Init(SPI2,& SPI_InitStructure);
SPI_Cmd(SPI2,ENABLE);
ReadADCData = SPI_I2S_ReceiveData(SPI2); /* Read 16Bit Data From AD7708 For AIN1 */
}
void Int_ADC_Configuration()
{
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE) ;
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_Externa lTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Righ t;
ADC_InitStructure.ADC_NbrOfChannel=1;
ADC_Init(ADC1,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_ SampleTime_239Cycles5); /* Select Channel 0*/
ADC_Cmd(ADC1,ENABLE);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
IntADCData = ADC_GetConversionValue(ADC1);
ADC_Cmd(ADC1,DISABLE);
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_ SampleTime_239Cycles5); /* Select Channel 1*/
ADC_Cmd(ADC1,ENABLE);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
IntADCData = ADC_GetConversionValue(ADC1);
}
سلام مهندس
مطمئني كلاك هسته درست تنظيم شده؟ به نظر مياد مشكل اصلي از همونجا ناشي ميشه.
يه چيز ديگه: چرا تو حلقه while تابع AD7708_Configuration رو قرار دادين؟
_____________________________________
_____________________________________
درسته برنامه بهترين حالت نيست ولي غلط نميشه وقتي هر دفعه كانفيگ انجام بشه
بعد
تمام تنظيمات كلاك هم در برنامه نوشته شده .. به نظر درست مياد؟
حالا اگر دوستان پشتیبانی شرکت کویر الکترونیک ما رو کمک کنن خوب میشه!
اساتید به خصوص جناب صادق محمدي
برای نمایش فونت فارسی با درایور SSD1963 با stm32F103RBT
چکار باید کرد از کتاب خونه های GLCD , N96 که یکی از دوستان راهنمایی فرموده بودن نتونستم راش بندازم !!!!
کمک میکنید؟؟؟
دو ماهی میشه با این همه منبع به هیچ نتیجه ای نرسیدم !!!
بورد من همین برد MINI STM32 و درایور بورد السیدی 7" شرکت کویر الکترونیک هستش !!!
اساتید کمک میکنید؟؟؟
ویرایش توسط MMBMMB20 : 28-10-2013 در ساعت 11:57
دوستان سلام
میخواستم یک EEPROM سری 24Cxx را به میکروی STM32F103RET6 اضافه کنم.
مسئله ایی که وجود داره برام :
- پایه هایی بر روی میکرو برای پشتیبانی سخت افزاری و بالطبع فانکشن های نوشته شده توسط نرم افزارها وجود داره که سرنام I2C رو نیز به همراه دارند ( مانند پایه PB6 و PB7 یا PB10 و PB11 ). آیا برای کار با پروتکل I2C و یا اتصال تجهیزاتی که با این پروتکل کار میکنند ، منحصراً ملزم به استفاده از این پایه ها هستیم و یا میتوان از پایه های عمومی هم سود جست ؟؟
سلام
خب ماژول I2C به این پایه ها متصل هست و اگه بخواهید به پایه های دیگه به این سخت افزار متصل نیستند متصل کنید دیگه امکانات سخت افزاری I2C رو در اختیار ندارید و مجبورید نرم افزاری این پروتکل رو ایجاد کنید که یقینا خیلی محدودیت داره . معمولا توی میکرو های ST برای یک فانکشن چند Remap قرار میدهند ببینید پین های مورد نظر شما تو لیست این ریمپ ها نیست .
ممنون از شما ...
حالا اگه بخوام از همین پایه های پیشفرض استفاده کنم، هنوز میتونم با همون دستورهای مربوط به GPIO ، PullUp پایه های رو فعال کرد ؟؟؟
خیر ، ببین PullUp و PullDown مربوط به مد GPIO هست . یعنی اگه بخوای مثلا یک پین رو پول آپ کنی باید تو تنظیمات GPIO این کار رو بکنی و این یعنی که داری از مد GPIO استفاده میکنی ! ولی وقتی مد پین رو روی مثلا I2C تنظیم میکنی ماژول I2C به پین وصل میشه و قابلیت فعال کردن پول آپ و ... رو نداری و اصلا موقع اتصال به I2C پین های کلاک و دیتا بصورت OpenDrain در میان که از بیرون باید مطابق استاندارد I2C اونا رو پول آپ کنی .
حالا اگه احتیاج داری از یک پین هم اطلاعات I2C رو بخونی و هم دستی 0 و 1 کنی یا ورودی بگیری این ممکنه منتها به این شکل که مثلا اول پین رو I2C کانفیگ کنی بعد که دیتا رو خوندی و نوشتی ، کانفیگ رو عوض کنی و GPIO بزاری . حالا میتونی 0 و 1 کنی یا ورودی بگیری ، پول آپ کنی و ... بعد ذوباره میتونی کانفیگ I2C کنی و ....