Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:si470x-rds

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2018:si470x-rds [2019/01/28 04:18]
Radovan Juráň [Postup práce]
2018:si470x-rds [2019/01/28 08:32] (aktuální)
Radovan Juráň
Řádek 65: Řádek 65:
 Čtení a zápis registrů funguje na principu [[https://​cs.wikipedia.org/​wiki/​I%C2%B2C|sběrnice I2C]], avšak má svá specifika. Komunikace probíhá ve tří- nebo dvouvodičovém zapojení, které se volí při zapínání zařízení. Jakmile je nakonfigurováno,​ může začít čtení/​zápis registrů. Je potřeba věnovat pozornost faktu, že čtení probíhá od registru 0x0A a pokračuje přes 0x0F zpět od 0x00 tak, že z 16bitového registru vždy přijde horních 8 bitů a pak dolních 8 bitů vždy v pořadí. ​ Čtení a zápis registrů funguje na principu [[https://​cs.wikipedia.org/​wiki/​I%C2%B2C|sběrnice I2C]], avšak má svá specifika. Komunikace probíhá ve tří- nebo dvouvodičovém zapojení, které se volí při zapínání zařízení. Jakmile je nakonfigurováno,​ může začít čtení/​zápis registrů. Je potřeba věnovat pozornost faktu, že čtení probíhá od registru 0x0A a pokračuje přes 0x0F zpět od 0x00 tak, že z 16bitového registru vždy přijde horních 8 bitů a pak dolních 8 bitů vždy v pořadí. ​
  
-První pokusy o komunikaci probíhaly s využitím //HAL I2C Generic Driver//, který se ukázal méně vhodný pro tyto účely, protože svou abstrakcí odbíhá od požadovaných kroků nutných během komunikace. Vhodnějším se zdál být po několikadenním experimentování //LL I2C Generic Driver//, ​tedy low-layer, a to primárně protože umožňuje kontrolovat a ovládat stavy komunikace (START, ACK, STOP apod.) na sběrnici I2C. Jeho využití lze v CubeMX nalézt a zapnout v //Project Manager>​Advanced Settings>​Driver Selector//. Značná část času byla investována do nastolení korektní komunikace mezi Masterem a Slavem, což se nepodařilo ve stanoveném termínu odladit.+První pokusy o komunikaci probíhaly s využitím //HAL I2C Generic Driver//, který se ukázal méně vhodný pro tyto účely, protože svou abstrakcí odbíhá od požadovaných kroků nutných během komunikace. ​Byť snaha dodržet kroky z datasheetu vrátila nějaké nenulové byty, jejich interpretace je chybná. 
 + 
 +<code c> 
 +uint8_t si4703_registers[32] = "";​ 
 +//force zeros at initial state by default, https://​stackoverflow.com/​questions/​18688971/​c-char-array-initialization 
 + 
 +/* 1. Supply VA and VD. */ 
 +/*2. Supply VIO while keeping the RST pin low. Note that power supplies may be sequenced in any order (steps 1 
 +and 2 may be reversed).*/​ 
 +HAL_GPIO_WritePin(GPIOD,​ GPIO_PIN_1, GPIO_PIN_RESET);​ 
 + 
 +/*3. Configure the proper pins for bus mode selection. See Figure 3, “Powerup, Powerdown, and Reset Flowchart,​” 
 +on page 7.*/ 
 +HAL_GPIO_WritePin(GPIOC,​ GPIO_PIN_9, GPIO_PIN_RESET);​ 
 +HAL_Delay(1);​ // some delay needed 
 + 
 +/*4. Set the RST pin high. The device registers may now be read and written.*/​ 
 +HAL_GPIO_WritePin(GPIOD,​ GPIO_PIN_1, GPIO_PIN_SET);​ 
 +HAL_Delay(1);​ // some delay needed 
 + 
 +/*5. Provide RCLK. If using the internal oscillator option, set the XOSCEN bit. Provide a sufficient delay before 
 +setting the ENABLE bit to ensure that the oscillator has stabilized. The delay will vary depending on the external 
 +oscillator circuit and the ESR of the crystal, and it should include margin to allow for device tolerances. The 
 +recommended minimum delay is no less than 500 ms. A similar delay may be necessary for some external 
 +oscillator circuits. Determine the necessary stabilization time for the clock source in the system. 
 +To experimentally measure the minimum oscillator stabilization time, adjust the delay time between setting the 
 +XOSCEN and ENABLE bits. After powerup, use the Set Property Command described in "​5.1.Si4702/​03 
 +Commands (Si4702/03 Rev C or Later Device Only)" on page 31 to read property address 0x0700. If the delay 
 +exceeds the minimum oscillator stabilization time, the property value will read 0x1980 ±20%. If the property 
 +value is above this range, the delay time is too short. The selected delay time should include margin to allow for 
 +device tolerances.*/​ 
 +HAL_I2C_MspInit(&​hi2c3);​ //​wake up the I2C 
 +HAL_I2C_Master_Receive(&​hi2c3,​ SI4703_ADDRESS,​ si4703_registers,​ 32, 100); //read for being able to modify 
 + 
 +/*6. Si4703-C19 Errata Solution 2: Set RDSD = 0x0000. Note that this is a writable register.*/​ 
 +/*7. Set the ENABLE bit high and the DISABLE bit low to powerup the device.*/ 
 +</​code>​ 
 + 
 + 
 + 
 +Vhodnějším se zdál být po několikadenním experimentování //LL I2C Generic Driver//, ​t/​code>​edy ​low-layer, a to primárně protože umožňuje kontrolovat a ovládat stavy komunikace (START, ACK, STOP apod.) na sběrnici I2C. Jeho využití lze v CubeMX nalézt a zapnout v //Project Manager>​Advanced Settings>​Driver Selector//. Značná část času byla investována do nastolení korektní komunikace mezi Masterem a Slavem, což se nepodařilo ve stanoveném termínu odladit.
2018/si470x-rds.1548645503.txt.gz · Poslední úprava: 2019/01/28 04:18 autor: Radovan Juráň