سلام به همگی بعد خیلی وقت.
میخواستم ماژول قطب نمای GY-271 رو راه بندازم پس رقتم دیتاشیت تو بخش نحوه ارتباط.
راستش درباره ارتباط با ماژول مشکلی ندارم. پایه و اساس ارتباط i2c رو هم بلدم. مشکل اصلی من با دستورات بسکامه.
اول ارتباط با ماژول رو توضیح بدم که کاملا براتون روشن باشه.
این ماژول 13 تا رجیستر داره که شما میتونید تو سه تا از اونا بنویسین و بخونین. و بقیه فقط قابل خوندن هستن.
این عکس موضوع رو روشن میکنه:

آدرس 7 بیتی ماژول 0x3E هست ( که تو بسکام میگن &H3E ) بعلاوه یه بیت که نشون میده میخای بخونی یا بنویسی.
پس اگه بخوای بنویسی آدرس میشه 0x3C اگه بخوای بخونی آدرس 0x3D رو باید انتخاب کنی.
پس دو تا آدرس داریم.
برای نوشتن در یک رجیستر اینارو باید پشت سر هم بفرستی:
لازم به ذکره که اگه محتوای یه رجیستر کامل خونده بشه register pointer (که یادش میمونه با کدوم رجیستر کار داری) محتواش رو یه دونه اضافه میکنه. و دیگه لازم نیست دوباری بگی با کدوم رجیستر کار داری.
برای تنظیم محتوای register pointer مثل بالایی مینویسی ولی دیتا (اون سومیه) رو نمینویسی.
برای خوندن اینارو میفرستی:
ولی قبلش باید register pointer رو اون رجیستری که میخوای شروع بکنی به خوندن تنظیم کنی.
__________________________________________________ ____________
و اما مشکل:
من اگه میتونستم به این بسکام بفهمونم که همونایی که بالا گفتم رو رو باس i2c بفرسته بعد بگم 6 بایت بخون خیلی خوب میشد.
ولی من نمیدونم چجوری بهش بگم:
1- فلان بایت رو ارسال کن. ( مثلا همون 0x05 که گفتم )
2- فلان تعداد بایت رو بگیر رو تو این متغیر بریز.
قربون همتون اگه این دوتا رو برام روشن کنین.
در ضمن بهتره یه نگاهی هم به دیتاشیت بندازین. شایت اینایی که من گفتم رو اشتباهی متوجه شده باشم و تا آخرش راه رو غلط بریم.
اگر هم دیتاشیت خواستین برین تو گوگل بزنین : HMC5883L datasheet
میخواستم ماژول قطب نمای GY-271 رو راه بندازم پس رقتم دیتاشیت تو بخش نحوه ارتباط.
راستش درباره ارتباط با ماژول مشکلی ندارم. پایه و اساس ارتباط i2c رو هم بلدم. مشکل اصلی من با دستورات بسکامه.
اول ارتباط با ماژول رو توضیح بدم که کاملا براتون روشن باشه.
این ماژول 13 تا رجیستر داره که شما میتونید تو سه تا از اونا بنویسین و بخونین. و بقیه فقط قابل خوندن هستن.
این عکس موضوع رو روشن میکنه:

آدرس 7 بیتی ماژول 0x3E هست ( که تو بسکام میگن &H3E ) بعلاوه یه بیت که نشون میده میخای بخونی یا بنویسی.
پس اگه بخوای بنویسی آدرس میشه 0x3C اگه بخوای بخونی آدرس 0x3D رو باید انتخاب کنی.
پس دو تا آدرس داریم.
برای نوشتن در یک رجیستر اینارو باید پشت سر هم بفرستی:
کد:
0x3C (write address) 0x05(register number - here points to the sixth register) 0x00 (the data to be written into the register)
برای تنظیم محتوای register pointer مثل بالایی مینویسی ولی دیتا (اون سومیه) رو نمینویسی.
برای خوندن اینارو میفرستی:
کد:
0x3D (read address) 0x06 (number of the bytes to read)
__________________________________________________ ____________
و اما مشکل:
من اگه میتونستم به این بسکام بفهمونم که همونایی که بالا گفتم رو رو باس i2c بفرسته بعد بگم 6 بایت بخون خیلی خوب میشد.
ولی من نمیدونم چجوری بهش بگم:
1- فلان بایت رو ارسال کن. ( مثلا همون 0x05 که گفتم )
2- فلان تعداد بایت رو بگیر رو تو این متغیر بریز.
قربون همتون اگه این دوتا رو برام روشن کنین.
در ضمن بهتره یه نگاهی هم به دیتاشیت بندازین. شایت اینایی که من گفتم رو اشتباهی متوجه شده باشم و تا آخرش راه رو غلط بریم.
اگر هم دیتاشیت خواستین برین تو گوگل بزنین : HMC5883L datasheet
دیدگاه