ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 26

موضوع: SPi با LPC1768

  1. #1
    2007/08/21
    تهران
    843
    6

    SPi با LPC1768

    براي راه اندازي SPI1 درLPC1768 نياز به يك مثال ساده دارم
    مشكل اينجاست كه رجيسترهاي SPDR و SPSR را چطور براي SPI1 استفاده كنم
    من به اين ترتيب برنامه را شروع كرده ام :
    کد:
     LPC_SC->PCONP = (LPC_SC->PCONP & 0xEFEFF7DE) | (1UL<<10);  /* Enable peripheral clock for SSP1 (default is enabled) */
    
     LPC_SC->PCLKSEL0 &= ~(3<<20);
     LPC_SC->PCLKSEL0 |= (1<<20);
    
      LPC_SC->PCLKSEL0 |= (2<<12); // ssel1
      LPC_SC->PCLKSEL0 |= (2<<14); // sck1
      LPC_SC->PCLKSEL0 |= (2<<16); // miso11
      LPC_SC->PCLKSEL0 |= (2<<18); // mosi11
    
      //   LPC_SC->PCONP |= (1 << 10);	 //enable spi1
      LPC_SSP1->CR0 |= 3<<6; 	//clock phase
    	LPC_SSP1->CR0 |= 7<<0; 	// 8 bits
    	LPC_SSP1->CR1 |= 1<<1; 	//enable SSP
    
     // LPC_SSP1->CR0 = 0x0007;   /* binary: 00000000_00001111 */
      // LPC_SSP1->CR1 = 0x00;   /* binary: 00000000 */
      LPC_SSP1->CPSR = 0x22;   /* decimal 2 sck */
      LPC_SSP1->IMSC = 0x00;   /* binary: 00000000 intrupt*/
      LPC_SSP1->DMACR = 0x0000;   /* binary: 00000000_00000000 dma*/
    ولي براي SPDR كه در SSP1 ,وجود ندارد و بايد SPI->SPDR بنويسم . اين چطور مي فهمد كه الان ديتاي SPI0 يا SPI1 است ؟؟
  2. #2
    2007/08/21
    تهران
    843
    6

    پاسخ : SPI1 با LPC1768

    اصولا فرق spi وssp چيه ؟ كه ما 2 تا ssp داريم و همون پايه هاي miso, mosi , sck را رو داره ؟
  3. #3
    2012/12/14
    شيراز
    118
    0

    پاسخ : SPI1 با LPC1768

    دو تا مثال براتون پلود کردم کارتونو راه ميندازه اميدوارم به کارتون بياد
    http://uplod.ir/rdv5x4duubj6/SPI.rar.htm
  4. #4
    2007/08/21
    تهران
    843
    6

    پاسخ : SPI1 با LPC1768

    مثالهاي شما رو دانلود كردم
    اگه ميشه قبلش در مورد ماهيت ssp و spi و تفاوت آندو برام توضيح بدبد .

    در مثال 2 شما
    کد:
    LPC_SC->PCONP |= (1 << 8); /* Enable power to SSPI0 block */ LPC_GPIO0->FIODIR |= (1<<16); /* P0.16 is output */ LPC_PINCON->PINSEL0 |= (3UL<<30); // select p0.15 --> SCK LPC_PINCON->PINSEL1 |= (3<<2) | (3<<4); // select p0.17 , p0.18 --> MISO , MISI
    و لي در ادامه همون spi رو ادامه داديد و اگر مثلا بخواهيم ssp0 , spp1 و spi رو با هم استفاده كنيم چطوري ميشه ؟
  5. #5
    2012/12/14
    شيراز
    118
    0

    پاسخ : SPI1 با LPC1768

    اين مثال ها رو از برد آموزشي landtiger براتون فرستادم و خودم با اين قسمتها کار نکردم و اطلاعاتي ندارم
  6. #6
    2007/08/21
    تهران
    843
    6

    پاسخ : SPI1 با LPC1768

    اين مثال ها رو از برد آموزشي landtiger براتون فرستادم و خودم با اين قسمتها کار نکردم و اطلاعاتي ندارم
    به هر حال دست شما درد نكنه لطف كرديد .
    من در مدار چاپيم اشتباها براي پايه هاي spi از پورت ssp1 استفاده كردم و الان براي ارتباط با بيرون مشكل دارم و نمي دونم اصلا اين ssp1 چيه ؟ آيا همون spi هو از نظر نرم افزاري هم نمي تونم راش بندازم .
    اگه كسي مي تونه كمكم كنه
    يا اينكه بايد مدار چاپي را اصلاح كنم !!!
  7. #7
    2012/12/14
    شيراز
    118
    0

    پاسخ : SPI1 با LPC1768

    خواهش
    فک کنم بايد برد رو اصلاح کني چون فک کنم SPI با SSP فرق داره و کلا پايه هاش متفاوته
  8. #8
    2007/08/21
    تهران
    843
    6

    پاسخ : SPI1 با LPC1768

    من اومدم پايه ها رو فعلا از روي pcb مونتاژ شده با بدبختي عوض كردم .
    ولي الان توي خط while( !(LPC_SPI->SPSR & 0x80));//wait for transfer to be completed
    مي مونه و موقع نوشتن ديتا همون جا مي مونه تا واچ داگ بشه

    علت چي مي تونه باشه
  9. #9
    2007/08/21
    تهران
    843
    6

    پاسخ : SPI1 با LPC1768

    اشكال رو پيدا كردم :
    پايه cs رو دستي درست كنترل نمي كردم كه اصلاح شد و الان ظاهرا اين مرحله رد شده
    ولي در موقع خوندن هر چي مي خونم ff خومده مي شه آيا مثل نوشتن در موقع خوندن هم بايد flag ي رو چك كرد ؟
  10. #10
    2012/05/30
    کرمان
    793
    19

    پاسخ : SPI1 با LPC1768

    سلام
    ssp مخفف Synchronous Serial Port هست که در سه مد spi و ssi و microwire میتونه کار کنه.

    تا حالا باهاش کار نکردم ولی برای راحتی کار میتونید از ARMWizard برای تنظیم رجیستر ها استفاده کنید.

    این هم یه مثال که از ssp0 استفاده کرده البته با cmsis
    امیدوارم مفید باشه
    کد:
    /**********************************************************************
    * $Id$		ssp_master.c					2010-05-21
    *//**
    * @file		ssp_master.c
    * @brief	This example describes how to use SPP in master mode
    * @version	2.0
    * @date		21. May. 2010
    * @author	NXP MCU SW Application Team
    *
    * Copyright(C) 2010, NXP Semiconductor
    * All rights reserved.
    * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. **********************************************************************/ #include "lpc17xx_ssp.h" #include "lpc17xx_libcfg.h" #include "lpc17xx_pinsel.h" #include "debug_frmwrk.h" #include "lpc17xx_gpio.h" /* Example group ----------------------------------------------------------- */ /** @defgroup SSP_Master Master * @ingroup SSP_Examples * @{ */ /************************** PRIVATE DEFINTIONS ************************/ /** Max buffer length */ #define BUFFER_SIZE 0x40 /************************** PRIVATE VARIABLES *************************/ uint8_t menu1[] = "********************************************************************************\n\r" "Hello NXP Semiconductors \n\r" "SSP demo \n\r" "\t - MCU: LPC17xx \n\r" "\t - Core: ARM Cortex-M3 \n\r" "\t - Communicate via: UART0 - 115200bps \n\r" "\t An example of SSP using polling mode to test the SSP driver \n\r" " This example uses SSP in SPI mode as master to communicate with an SSP slave device \n\r" " The master and slave transfer together a number of data byte \n\r" "********************************************************************************\n\r"; uint8_t menu2[] = "Demo terminated! \n\r"; // SSP Configuration structure variable SSP_CFG_Type SSP_ConfigStruct; // Tx buffer uint8_t Tx_Buf[BUFFER_SIZE]; // Rx buffer uint8_t Rx_Buf[BUFFER_SIZE]; /************************** PRIVATE FUNCTIONS *************************/ void print_menu(void); void Buffer_Init(void); void Error_Loop(void); void Buffer_Verify(void); /*-------------------------PRIVATE FUNCTIONS------------------------------*/ /*********************************************************************//** * @brief Initialize buffer * @param[in] None * @return None **********************************************************************/ void Buffer_Init(void) { uint8_t i; for (i = 0; i < BUFFER_SIZE; i++) { Tx_Buf[i] = i; Rx_Buf[i] = 0; } } /*********************************************************************//** * @brief Error Loop (called by Buffer_Verify() if any error) * @param[in] none * @return None **********************************************************************/ void Error_Loop(void) { /* Loop forever */ while (1); } /*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint8_t i; uint8_t *src_addr = (uint8_t *) &Tx_Buf[0]; uint8_t *dest_addr = (uint8_t *) &Rx_Buf[0]; for ( i = 0; i < BUFFER_SIZE; i++ ) { if ( *src_addr++ != *dest_addr++ ) { _DBG_("Verify error"); /* Call Error Loop */ Error_Loop(); } } } /*********************************************************************//** * @brief Print Welcome menu * @param[in] none * @return None **********************************************************************/ void print_menu(void) { _DBG(menu1); } /*-------------------------MAIN FUNCTION------------------------------*/ /*********************************************************************//** * @brief c_entry: Main SSP program body * @param[in] None * @return int **********************************************************************/ int c_entry(void) { PINSEL_CFG_Type PinCfg; SSP_DATA_SETUP_Type xferConfig; /* * Initialize SPI pin connect * P0.15 - SCK; * P0.16 - SSEL * P0.17 - MISO * P0.18 - MOSI */ PinCfg.Funcnum = 2; PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; PinCfg.Portnum = 0; PinCfg.Pinnum = 15; PINSEL_ConfigPin(&PinCfg); PinCfg.Pinnum = 17; PINSEL_ConfigPin(&PinCfg); PinCfg.Pinnum = 18; PINSEL_ConfigPin(&PinCfg); PinCfg.Pinnum = 16; PINSEL_ConfigPin(&PinCfg); /* Initialize debug via UART0 * – 115200bps * – 8 data bit * – No parity * – 1 stop bit * – No flow control */ debug_frmwrk_init(); // print welcome screen print_menu(); // initialize SSP configuration structure to default SSP_ConfigStructInit(&SSP_ConfigStruct); // Initialize SSP peripheral with parameter given in structure above SSP_Init(LPC_SSP0, &SSP_ConfigStruct); // Enable SSP peripheral SSP_Cmd(LPC_SSP0, ENABLE); _DBG_("Press '1' to start transfer..."); while (_DG != '1'); /* Initialize Buffer */ _DBG_("Init buffer"); Buffer_Init(); _DBG_("Start transfer..."); xferConfig.tx_data = Tx_Buf; xferConfig.rx_data = Rx_Buf; xferConfig.length = BUFFER_SIZE; SSP_ReadWrite(LPC_SSP0, &xferConfig, SSP_TRANSFER_POLLING); // Verify buffer after transferring Buffer_Verify(); _DBG_("Verify complete!"); /* Loop forever */ while(1); return 1; } /* With ARM and GHS toolsets, the entry point is main() - this will allow the linker to generate wrapper code to setup stacks, allocate heap area, and initialize and copy code and data segments. For GNU toolsets, the entry point is through __start() in the crt0_gnu.asm file, and that startup code will setup stacks and data */ int main(void) { return c_entry(); } #ifdef DEBUG /******************************************************************************* * @brief Reports the name of the source file and the source line number * where the CHECK_PARAM error has occurred. * @param[in] file Pointer to the source file name * @param[in] line assert_param error line source number * @return None *******************************************************************************/ void check_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
    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا
صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 26

موضوعات مشابه

  1. SD با LPC1768
    توسط Ramin1768 در انجمن NXP
    پاسخ: 14
    آخرين نوشته: 2016/03/16, 11:51
  2. adc با lpc1768
    توسط Ramin1768 در انجمن NXP
    پاسخ: 2
    آخرين نوشته: 2016/03/08, 09:17
  3. lpc1768
    توسط sepehrhashtroudi در انجمن NXP
    پاسخ: 3
    آخرين نوشته: 2015/01/25, 15:05
  4. ADC در LPC1768
    توسط yaser1373 در انجمن NXP
    پاسخ: 0
    آخرين نوشته: 2014/02/17, 21:05
  5. C & LPC1768
    توسط ieee7 در انجمن NXP
    پاسخ: 1
    آخرين نوشته: 2011/10/16, 19:01

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •