|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 b7 s6 ^$ u7 w6 Xvoid PSCInit(void)
" f0 m" s+ E) o$ L( }& Z F% |( `{
$ H R7 R5 r9 w1 J& E' g3 V( _- Y/ b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. d' t% c& x t$ [! Y) B8 G
}
1 w1 I7 A& j2 T, ~4 q! ^, J0 O7 @$ y$ \* B, m' ]
void GPIOBankPinMuxSet(void)
7 v" u8 E# H! x3 z{7 Q/ \0 @3 Z6 o/ f. W
// DRDY ------------ GPIO6[14] -- 111& R( N7 P, H- r4 }7 g2 D
// SPI1_CLK ------------ GPIO2[13] -- 46- A, d- u$ F9 y. |) m4 H" y
// SPI1_SOMI------------ GPIO2[11] -- 44
7 p3 B$ G4 Z9 \- z* D. T // SPI1_SIMO------------ GPIO2[10] -- 43
0 S9 x7 `5 n/ N% z# s" Y! M/ {6 r // SPI1_CS2 ------------ GPIO1[0] -- 17! e5 M2 I+ _( w- m, E0 ?
// SPI1_CS3 ------------ GPIO1[1] -- 18
. p* `/ c: \. \( u" J/ k3 M6 |" d; I. {/ Z1 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);3 O X, R. d9 N- d: n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 s5 L6 c, u/ ^% c, Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 b D W$ a0 q- W1 {7 \& U k, X. P$ n
//DRDY# `$ x g: C+ t& p9 y" O
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" }( s2 W4 Q1 i" K7 @+ r% n
// CS2,CS3
; _* h2 P/ x; x! X GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# I; X& Q+ L `" a5 G- A x8 t
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: j+ E, X3 o8 S //SIMO+ C0 E% W: }) \. ?9 e& D
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 B* y; g* n' o5 V //SOMI9 p1 _: Y5 j: C. s( t2 k* M
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# N1 g1 G8 J4 F1 O) \5 g F5 ? //CLK
2 ~5 f! ^# n L' N. j; y GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ ]! g- `" S# _5 t" d7 ?( X
$ i" }% L6 U# D" D# F6 ? // LDAC
* f5 `# D* [1 ^0 a# p GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 f+ N4 B# o$ u- o# S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; I U" f t. t2 L* E9 B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: p( m+ n' i6 k I7 g* r5 a( {6 v& v% z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS33 d, R0 ^4 V/ V# [& B' J5 F: N
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" g/ i1 B* L B! _) v5 `+ c}# D- j1 ]! z, {4 c: P {* \
0 Z% P% ]; l$ ]. I! nint main(void): e, f5 P+ e) u* e9 E/ _& P) w. h
{
# i% C0 A W8 X4 d0 P // 外设使能
H* z) O0 k- J3 q+ L; y3 f PSCInit();
. W0 G- S! r: @- r1 l8 ~
4 d& T: Q! p% c! V - u$ u- R" x9 k1 E) s5 f; }
// 管脚复用配置! q: L+ L7 O2 u! Z
GPIOBankPinMuxSet();
7 [0 u1 R9 }4 h2 B) @0 { for(;;)
8 t, M& z/ [" r8 _5 Q1 W {
- r. o2 p! q7 F1 \ SET_SCLK();//时钟正常输出7 _; a# M# `/ w2 f V0 P4 g e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. N3 Q5 Y7 J1 X. r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ c5 d. G0 I/ u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& @0 b& |( v5 l
4 h, |' `. C+ O; c$ X( R delay(20);
; I' r- C% l2 ~ CLR_SCLK();- [8 ^& p7 N Y4 P5 t; S' c% M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; E3 g% ]" {2 }# `, [$ M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: M/ M; v- E. w8 F3 _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! ^4 m% l2 t5 v
delay(20);
, p4 m7 W1 s9 c, a }
5 r; q# ^6 Q |6 z}$ ~' @! O- p% i: {/ r; z0 ~! ^) N
|
|