سلام به همه دوستان و اساتید عزیز
من میخواستم بدونم دقیقا برای ارسال و دریافت یک عدد مثلا 32 بیت روش ارسال به spi در مود مستر توی 1768 با استفاده از توابع cmsis چطور هست ؟؟
با تشکر
گفتن مثال برای قسمتهای راه اندازی شده
ادامه بحث و راه اندازی قسمتهای راه اندازی نشده
سلام به همه دوستان و اساتید عزیز
من میخواستم بدونم دقیقا برای ارسال و دریافت یک عدد مثلا 32 بیت روش ارسال به spi در مود مستر توی 1768 با استفاده از توابع cmsis چطور هست ؟؟
با تشکر
آقای طاهری چرا دیگه آموزشو ادامه نمیدید ؟
مطالب به خوبی و کاربردی نوشتید مطمئن باشید هرکی میخونه دعا میکنه لطفا به کارتون با قدرت ادامه بدید
سلام دوست عزیز.شرمنده که من این چند روزه زیاد به اینترنت دسترسی نداشتم و نمیتونستم جواب بدم .یه مثال براتون گذاشتم تا انشالله مشکلتون حل بشه
کد:SPI_DATA_SETUP_Type SpiData; SPI_CFG_Type spicfg; unsigned short int data_transfer[2]; SPI_ConfigStructInit(&spicfg); spiData.tx_data=data_transfer; spiData.rx_data=NULL; spiData.length=2; SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLING);انشالله که مشکل حل بشه با این دستورات.اگه نشد من در خدمتتونم
از لطف شما و بقیه دوستان واقعا ممنونم داداشم.
اگه توجه کرده باشین خیلی از قسمتها راه اندازی شده و فقط 4 یا 5 قسمت دیگه مونده که اونها رو هم دارم آماده میکنم .انشالله قسمت بعدی ژورت سریاله.اما این قسمت اونقده مطلب داره که چند روز دیگه طول میکشه داداشم.کاش شما هم کمکی میکردین و یه قسمت رو راه مینداختین دوست عزیزم.
از لطف شما و بقیه دوستان واقعا ممنونم داداشم.
اگه توجه کرده باشین خیلی از قسمتها راه اندازی شده و فقط 4 یا 5 قسمت دیگه مونده که اونها رو هم دارم آماده میکنم .انشالله قسمت بعدی پورت سریاله.اما این قسمت اونقده مطلب داره که چند روز دیگه طول میکشه داداشم.کاش شما هم کمکی میکردین و یه قسمت رو راه مینداختین دوست عزیزم. مثلا قسمت dac.
با توجه به مطالب کاملی که در این پست در مورد راه اندازی قسمتهای مختلف lpc 1768 گفته شده کاش مسولین محترم سایت زحمت میکشیدن این پست رو به قسمت پستای کاربردی پین میکردن تا همیشه در دسترس دوستان باشه.ممنون
_____________________________________
_____________________________________
برای دریافت خالی فقط کافیه قسمت spi_data.tx=NULL قرار بگیره .یعنی بنویسی
<div align="left"> [PHP]
SPI_DATA_SETUP_Type SpiData;
SPI_CFG_Type spicfg;
unsigned short int data_reciver[2];
SPI_ConfigStructInit(&spicfg);
SPI_Init(LPC_SPI,&spicfg);
spiData.tx_data=NULL;
spiData.rx_data=data_reciver;
spiData.length=2;
SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLIN G);
[/PHP]برای ارسال و دریافت هم زمان هم میتونید بنویسسید
[PHP]
SPI_DATA_SETUP_Type SpiData;
SPI_CFG_Type spicfg;
unsigned short int data_reciver[2],data_transfer[2];
SPI_ConfigStructInit(&spicfg);
SPI_Init(LPC_SPI,&spicfg);
spiData.tx_data=data_transfer;
spiData.rx_data=data_reciver;
spiData.length=2;
SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLIN G);
[/PHP]
ویرایش توسط esi_52000 : 27-07-2012 در ساعت 19:50
سلام
از پاسختون ممنونم
اما مشکل من هم در دو مورد هستش اول اینکه
چرا از دستور spi_send_data و یا spi_recieve_data استفاده نمیکنیم؟؟
و دوم اینکه برای دریافت چرا spiData.rx_data=data_reciver
استفاده میشه و برعکس نمینویسیم؟ یعنی data_reciever=spidata.rx_data
مگر نه اینکه ما میخواهیم یک مقدار رو از بافر بخونیم و در متغییر خودمون بریزیم؟!
همین موضوع هم من رو کمی گیج کرده و در مثالهای خود فیلیپس هم این روش استفاده شده !!
با تشکر فراوان
ویرایش توسط Mortezai : 28-07-2012 در ساعت 06:34
ببینید دوست عزیز spiData.rx_data در حقیقت یک اشاره گر به بافر دریافت شماست.
شما در حقیقت زمانی که دارین متغیر spiData رو از نوع SPI_DATA_SETUP_Type معرفی میکنین دارین اشاره گری از نوع STRUCT رو تعریف میکنین که به یک آرایه جهت دریافت و یک آرایه جهت ارسال
اشاره میکنه.من نمی دونم شما تا چه حد به زبان C آشنایی دارین(خدایی من قصد جسارت ندارما.من خودم جوجه برنامه نویسم داداشم).اما اگه بخواهین به صورت کامل با مبحث اشارهگر ها آشنا بشین به منابع زبان سی مراجعه کنین اینن مبحث کامل براتون حل میشه.
سلام
برای من سوال شده چرا دوستان با iar کار نمیکنن
تنها دلیلی که میگن نبود نرم افزار ه اما با یه سرچ سطحی اخرین ورژنش گیر میاد
iar کامپایلریه که تمام تراشه ها رو پشتیبانی میکنه و بهترین کد رو داره
قیمتش هم که در مقایسه با بقیه کامپایلر ها خیلی بالاتره و این به خاطر قدرتشه
سلام دوست عزیز.
بحثایی که تا حالا مطرح شده به هیچ کامپایلر خاصی وابسته نیست و شما با هر کامپایلری بخوایین کار کنین اگه قصد استفاده از cmsis رو داشته باشین بایستی با همین دستورات برنامه بنویسین.از طرفی کامپایلر هایی مثل iar از میکرو هایی پشتیبانی میکنن که خیلی از اونا تا 100 سال آینده هم وارد ایران نمیشن و اصلا نیازی نیست واسه کار با کرتکس شما برین و با کامپایلری با اون گستردکی کار کنین.من خودم با coide کار میکنم که فقط از cortex m پشتیبانی میکنه و کاملا هم راضی هستم .بقیه دوستان هم اکثرا از keil استفاده میکنن.بهتر وارد بحث کامپایلر نشیم عزیز
ویرایش توسط esi_52000 : 29-07-2012 در ساعت 01:41
لطفا يكي از دوستان بگه چطوري بايد با اين استراكچر كار كنم ؟
اگه يه مثال با تنظيمان معمول پورت سريال هم تهش بزاري كه ديگه خيلي بيشتر لطف ميكنينکد:/********************************************************************//** * @brief UART Configuration Structure definition **********************************************************************/ typedef struct { uint32_t Baud_rate; /**< UART baud rate */ UART_PARITY_Type Parity; /**< Parity selection, should be: - UART_PARITY_NONE: No parity - UART_PARITY_ODD: Odd parity - UART_PARITY_EVEN: Even parity - UART_PARITY_SP_1: Forced "1" stick parity - UART_PARITY_SP_0: Forced "0" stick parity */ UART_DATABIT_Type Databits; /**< Number of data bits, should be: - UART_DATABIT_5: UART 5 bit data mode - UART_DATABIT_6: UART 6 bit data mode - UART_DATABIT_7: UART 7 bit data mode - UART_DATABIT_8: UART 8 bit data mode */ UART_STOPBIT_Type Stopbits; /**< Number of stop bits, should be: - UART_STOPBIT_1: UART 1 Stop Bits Select - UART_STOPBIT_2: UART 2 Stop Bits Select */ } UART_CFG_Type;
كارم فوريه و لنگم
بعد از چند وقت برگشتم
سلام مهندس شایان.این مطلبی که گذاشتین برای پیکربندی پورت سریال شماست.من مطالب آموزشی اون رو دارم آماده میکنم و تا یه مدت دیگه میزارم توی همین فروم.اما واسه اینکه کارتون ران بیفته میتونید از قسمت زیر استفاده کنین.
[PHP]
unsigned char data_transfer[4],data_recive[4];
UART_CFG_Type uartcfg متغییری برای پیکر بندی پورت سریال
UART_FIFO_CFG_Type fifocfg متغییری برای پیکربندی فیفو پورت سریال
uartcfg.Baud_rate=9600 نرخ ارسال 9600 بیت بر ثانیه
uartcfg.Parity=UART_PARITY_NONE یعتی بیت توازن رو لازم ندارم و غیر فعال باشه
uartcfg.Databits=UART_DATABIT_8 ارسال به صورت 8 بیتی باشه .
uartcfg.Stopbits=UART_STOPBIT_1 در آخر ارسال تنها یک بیت پایان ارسال گردد .
حالا باید متغییر ی که تعریف کردی رو به یکی از پورتهای سریال نسبت بدی.مثلا پورت 0
UART_Init(LPC_UART0,&uartcfg);
برای پیکربندی فیفو از دستور زیر استفاده کنین
UART_FIFOConfigStructInit(&fifocfg);
حالا باید پایه ارسال پورت رو فعال کنین
UART_TxCmd(LPC_UART0,ENABLE);
حالا برای ارسال یک آرایه 4 بایتی بنویسین
UART_Send(LPC_UART0,data_transfer,4,BLOCKING);
:باعث میشه میکرو داده قبلی رو کامل ارسال کنه و بعد بره سراغ ارسال داده بعدBLOCKING
برای دریافت داده هم بنویسین
UART_Recive(LPC_UART0,data_recive,4,BLOCKING)
برای دریافت و ارسال با وقفه خیلی مطلب داره که انشالله توی آموزش کامل توضیح میدم
انشالله بدردتون بخوره این مطالب .
ب
[/PHP]
ویرایش توسط esi_52000 : 31-07-2012 در ساعت 15:27