Skip to content

Commit 232aaee

Browse files
BartMasseyclaude
andcommitted
updated nRF52833 Product Specification links to v1.7
- replaced v1.3/v1.6 infocenter/docs URLs with v1.7 docs-be - added links where the PS was referenced without one - moved link definitions to end of their sections Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent e5c911b commit 232aaee

5 files changed

Lines changed: 20 additions & 16 deletions

File tree

mdbook/src/04-meet-your-hardware/microbit-v2.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ short for radio frequency. If we search through the documentation of the chip l
2323
[aQFN73]: https://en.wikipedia.org/wiki/Flat_no-leads_package
2424
[Nordic Semiconductor]: https://www.nordicsemi.com/
2525
[product page]: https://www.nordicsemi.com/products/nrf52833
26-
[product specification]: https://infocenter.nordicsemi.com/pdf/nRF52833_PS_v1.3.pdf
26+
[product specification]: https://docs-be.nordicsemi.com/bundle/ps_nrf52833/attach/nRF52833_PS_v1.7.pdf
2727

2828
- The `N52` is the MCU's series, indicating that there are other `nRF52` MCUs
2929
- The `833` is the part code
@@ -33,7 +33,7 @@ short for radio frequency. If we search through the documentation of the chip l
3333
- The `A0` is the build code, indicating the hardware version (`A`) as well as the product configuration (`0`)
3434
- The `2024AL` is a tracking code, hence it might differ on your chip
3535

36-
The product specification does of course contain a lot more useful information about the chip: for
36+
The [product specification] does of course contain a lot more useful information about the chip: for
3737
example, that the chip is an Arm® Cortex™-M4 32-bit processor.
3838

3939

mdbook/src/09-registers/rtrm.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ registers allocated in contiguous memory. The address at which the register bloc
2525
its base address. We need to figure out what's the base address of the `P0` peripheral. That
2626
information is in the following section of the microcontroller [Product Specification]:
2727

28-
[Product Specification]: https://docs.nordicsemi.com/bundle/nRF52833_PS_v1.6/resource/nRF52833_PS_v1.6.pdf
29-
3028
> Section 4.2.4 Instantiation - Page 22
3129
3230
The table says that base address of the `P0` register block is `0x5000_0000`.
@@ -38,7 +36,7 @@ peripheral, that table is in:
3836
> Section 6.8.2 Registers - Page 144
3937
4038
`OUT` is the register which we will be using to set/reset. Its offset value is `0x504` from the base
41-
address of the `P0`. We can look up `OUT` in the reference manual.
39+
address of the `P0`. We can look up `OUT` in the [Product Specification].
4240

4341
That register is specified right under the `GPIO` registers table:
4442

@@ -92,7 +90,7 @@ Breakpoint 1, registers::__cortex_m_rt_main () at src/07-registers/src/main.rs:1
9290
```
9391

9492
Ok, we see that the register's value is `0x00000000` or `0` at this point. This corresponds with the
95-
data in the product specification, which says that `0` is the 'reset value' of this register. That
93+
data in the [Product Specification], which says that `0` is the 'reset value' of this register. That
9694
means that once the MCU resets, the register will have `0` as its value.
9795

9896
Let's go on. This line consists of multiple instructions (reading, bitwise ORing and writing), so we
@@ -196,3 +194,5 @@ Program received signal SIGINT, Interrupt.
196194
```
197195

198196
And at this points all LEDs should be turned off again!
197+
198+
[Product Specification]: https://docs-be.nordicsemi.com/bundle/ps_nrf52833/attach/nRF52833_PS_v1.7.pdf

mdbook/src/09-registers/spooky-action-at-a-distance.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
you change the value of the pins, as can `OUTCLR`. However, `OUTSET` and `OUTCLR` don't let you
55
retrieve the current output status of port `P0`.
66

7-
`OUTSET` is documented in:
7+
`OUTSET` is documented in the [Product Specification]:
88

99
> Subsection 6.8.2.2. OUTSET - Page 145
1010
@@ -30,3 +30,5 @@ $ cargo embed
3030

3131
Side effects! Although we are reading the same address multiple times without actually modifying it,
3232
we still see its value change every time `OUTSET` or `OUTCLR` is written to.
33+
34+
[Product Specification]: https://docs-be.nordicsemi.com/bundle/ps_nrf52833/attach/nRF52833_PS_v1.7.pdf

mdbook/src/12-i2c/read-a-single-register.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,18 @@ that just happens to have the same address. As you can read in the LSM303AGR's
2222
device. (The "A" is for "Accelerometer" and the "M" is for "Magnetometer".)
2323

2424
The only thing missing now is the software part: we need to determine which API of the `microbit` or
25-
a HAL crate we should use for this. If you read through the datasheet of the nRF chip you are using
26-
you will soon find out that it doesn't actually have an I2C-specific peripheral. Instead, it has
27-
more general-purpose I2C-compatible peripherals called TWI ("Two-Wire Interface"), TWIM ("Two-Wire
28-
Interface Master") and TWIS ("Two-Wire Interface Slave"). We will normally be operating in
29-
controller mode and will use the newer TWIM, which supports "Easy DMA" — the TWI is provided mostly
30-
for backward compatibility with older devices.
25+
a HAL crate we should use for this. If you read through the [nRF52833 Product Specification]
26+
you will soon find out that it doesn't actually have an I2C-specific peripheral.
27+
Instead, it has more general-purpose I2C-compatible peripherals called TWI ("Two-Wire
28+
Interface"), TWIM ("Two-Wire Interface Master") and TWIS ("Two-Wire Interface Slave").
29+
We will normally be operating in controller mode and will use the newer TWIM, which
30+
supports "Easy DMA" — the TWI is provided mostly for backward compatibility with older
31+
devices.
3132

3233
Now if we put the documentation of the [`twi(m)` module] from the `microbit` crate
3334
together with all the other information we have gathered so far we'll end up with this
3435
piece of code to read out and print the two device IDs (`examples/chip-id.rs`):
3536

36-
[`twi(m)` module]: https://docs.rs/microbit-v2/0.11.0/microbit/hal/twim/index.html
37-
3837
``` rust
3938
{{#include examples/chip-id.rs}}
4039
```
@@ -45,6 +44,9 @@ chapter. We pass the peripheral as well as the pins that are used to communicat
4544
the constructor; and then the frequency we wish the bus to operate on, in this case 100 kHz (`K100`,
4645
since identifiers can't start with a digit).
4746

47+
[nRF52833 Product Specification]: https://docs-be.nordicsemi.com/bundle/ps_nrf52833/attach/nRF52833_PS_v1.7.pdf
48+
[`twi(m)` module]: https://docs.rs/microbit-v2/0.11.0/microbit/hal/twim/index.html
49+
4850
## Testing it
4951
As usual
5052

mdbook/src/16-snake-game/game-logic.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ cryptographically secure, but it is efficient, easy to implement and good enough
4444
snake game. Our `Prng` struct requires an initial seed value, which we do get from the RNG
4545
peripheral.
4646

47-
[nRF52833 spec]: https://infocenter.nordicsemi.com/pdf/nRF52833_PS_v1.3.pdf
47+
[nRF52833 spec]: https://docs-be.nordicsemi.com/bundle/ps_nrf52833/attach/nRF52833_PS_v1.7.pdf
4848
[pseudo-random]: https://en.wikipedia.org/wiki/Pseudorandom_number_generator
4949
[xorshift]: https://en.wikipedia.org/wiki/Xorshift
5050

0 commit comments

Comments
 (0)