|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
- z0 Z" y, P0 M; V t$ ^6 avoid PSCInit(void)
( V. N4 j) d" c{
8 e3 Y! |$ _3 u- [& U+ I' P% c PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 o9 l/ M! I, ]; s0 f: E}6 Y: v7 p; Q9 s: e: Z4 L: _2 X
9 `. G/ c4 d" E( p" u/ f
void GPIOBankPinMuxSet(void)
- }$ E, u0 s9 r2 v{6 F2 e% g% F5 `: D1 D
// DRDY ------------ GPIO6[14] -- 111 D: X5 c7 L0 M7 {: D- {) O
// SPI1_CLK ------------ GPIO2[13] -- 46
1 f$ T% s; i2 o8 o // SPI1_SOMI------------ GPIO2[11] -- 44; |9 `9 G" P% P7 D, n
// SPI1_SIMO------------ GPIO2[10] -- 43( Y! }( e& H7 T% j! ]
// SPI1_CS2 ------------ GPIO1[0] -- 17+ ^: W4 ^$ a5 E5 Y6 Z7 K1 a& B, Y
// SPI1_CS3 ------------ GPIO1[1] -- 183 t6 f. x- n. K0 r" i# u5 r! f
# n/ ]/ N2 P4 Y1 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 r" u T3 i+ B% q" b ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
, ~, A$ ?' t# L& @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- r6 _, y( e% C4 `1 t2 [1 h
* ~& F8 ^% ^& [5 v' U* a; Z //DRDY" z; F7 E, s7 m3 G- H- e1 f
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& L5 U5 _& \" A/ m$ S# e // CS2,CS3
7 i+ r: P$ Z( }' j: \( i GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 g4 {2 M5 n3 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( R$ D6 x7 l1 u; N$ C
//SIMO
( Q( P. G/ x9 j# d Q. f0 G) d GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ Q4 Z" l# F4 U3 _) ]: z //SOMI0 D/ _' \% ~, i) C+ h
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
6 g( g( H& O# f) H0 u //CLK
. k2 Q% D/ v L+ f2 l GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ d S2 f' \( \0 q) c% K, z8 t3 A$ q2 y# T0 [+ h
// LDAC
, ~5 y2 |) P5 _! ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( a/ m2 K) g1 k; G" D; `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 C3 @. T( L$ r6 N, w }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 P7 `4 `4 A1 \) {8 `* c6 o* f% w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 \$ n6 ^3 n4 B: j8 x% J
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY v" L6 ]- y& Z4 C0 P. @, U" u8 V
}
) j9 n- ]4 e6 Q9 z- X0 @
, ?( Q) w3 I/ t1 Z: q3 Z7 sint main(void)$ L) w# g% |4 L7 E y
{
+ {) l. u2 H; L7 y& w9 ?3 E // 外设使能
. f# N# T( E' T0 B: Q! `2 \ PSCInit();
4 B) y* L' ^1 I: I5 k& |1 x" _$ N3 B( R0 F1 H7 H- {
; g6 @: M8 m! `
// 管脚复用配置
. }8 z, c2 Y7 b1 {8 i- |8 @8 X* A GPIOBankPinMuxSet();4 ~$ q, P# O& Q2 y( u9 ?8 a% T, z
for(;;)
+ b( g8 ^ L# j+ R) }. E7 y, X {, [/ T5 z5 v# J" B- n/ o7 q
SET_SCLK();//时钟正常输出8 o9 Y4 v# [+ I% `! m4 S: r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 p1 P1 s2 m4 C' Q0 n/ O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 g8 ]: A) w6 a$ z& l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 c/ l3 H! v# ]2 R5 v% C- S
8 o3 N/ L M# ^ m delay(20);
; r2 j* N$ ]/ G# {% N CLR_SCLK();
7 R. X [ Q0 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( k& l6 c( E- m% O, S' k( H. n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 N, _1 B+ s( R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' a5 s0 s% E. V0 ~' ]7 i delay(20);; x4 H% N3 O! T% V7 a
}
, o" u u9 p+ }. v1 o}# w: Q$ y" z) g' R1 h( k& D7 ^2 V
|
|