|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
5 T8 a. K% ]8 tvoid PSCInit(void) u6 n6 `$ F& D/ e
{
6 j$ F: `! `+ [% | PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. p. {$ M; J, Q( C( e6 t}
6 u( Y, R2 o: p4 O5 @
" V+ S& U+ z; z4 dvoid GPIOBankPinMuxSet(void): F% s" u5 n+ v: n
{/ I& R1 |3 X8 V3 K/ S; e" B8 ~, r' m
// DRDY ------------ GPIO6[14] -- 111# ~( o) m& S. U9 M. E3 v
// SPI1_CLK ------------ GPIO2[13] -- 46: D% l3 s W( M9 x9 h0 u
// SPI1_SOMI------------ GPIO2[11] -- 448 {5 d$ G, r( v) A# x) u# j
// SPI1_SIMO------------ GPIO2[10] -- 43+ _$ O+ v( _) Y
// SPI1_CS2 ------------ GPIO1[0] -- 17+ z) G, t: ?3 q8 L# g0 f/ `
// SPI1_CS3 ------------ GPIO1[1] -- 18
* g, f+ c8 m3 S: Q( ]1 t5 p4 u; B' c3 {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) X5 b8 S9 Z0 l" k0 G. d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 y8 d }+ Q. d# h% B6 Z' E8 {9 ?% b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( K% ]$ P% I, f4 |
* ?9 l3 C* G8 f0 B
//DRDY
1 T" u# T- @4 g" }' Y2 M; w GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* Y1 ^& f6 c; m' A4 X A // CS2,CS3
' i: f) Q( [% K! s GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# q& P, L+ _. s GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- E9 r: O, W: l' V: w, ]6 [ //SIMO; v/ F% P# ]4 m9 A6 s9 Y* J
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- _/ d% b# S4 M& r/ H% j& r. U
//SOMI
) V: n: u T' {5 m. D GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* |+ r; s: @! _
//CLK: H2 B0 ]' a! H- @
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" s7 m' h0 ^( Y n6 X& R. q
2 H7 ]0 x2 B! X' J% b* f // LDAC' y0 E l# n1 ^5 \* ? a9 ]" \# i, o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ J j6 I u7 R7 p8 a$ S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 L2 [' I! S8 d; h0 G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, e) d! P$ C! `7 `% t. r ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! O: ~: X+ i! t2 ~- I
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
7 _4 p7 Q! J. j" ?, e$ f! u1 n}
* c& E4 z4 }) R: x( z/ E' U' f
+ @# f7 F$ @$ T: Dint main(void)
1 K* Z3 d9 B+ T& s{/ r5 n/ C- @5 Z a; e: O h! X8 [
// 外设使能; Z* ~! j# f, Y: r/ m& v i! {
PSCInit();! ? Y2 l& O, ~6 S' E
/ D! X1 e W! J8 D+ [# J% Z
: O$ T( ^% A3 A D9 m7 J
// 管脚复用配置& q3 T( z8 y; f1 U5 J. {8 E% E0 ^& K
GPIOBankPinMuxSet();* }2 m! w+ f" y9 k/ K! H; t# i2 S
for(;;)1 _* K% C a3 W! ]; i6 k
{# L+ m; g3 M" W# f3 K
SET_SCLK();//时钟正常输出- `& M( _* |$ M( m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 v, y! Y, T+ e' W6 G( [$ B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 q7 {! y6 E3 p' ? G! i c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 M, \- S) F1 p: u6 ?
1 t3 \; X) s- Q. w delay(20);
3 h' f' Z( Q4 h2 B `, ^4 { CLR_SCLK();3 D& C2 v# f8 n6 u$ s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# `& K1 Z0 ?, l7 q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 F |0 b) \! j6 @) @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) p, y, C3 M5 |+ v% L z delay(20);
) G( D% P6 w8 S* ]& f }
- n; _% ~$ {' h3 L) @}
, j: {# g1 ]5 y) D" C |
|